database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Q&A 27813 게시물 읽기
No. 27813
판매일 별 제품 판매 개수 및 제품별 거래 현황 구하기...인데
작성자
Psycho(Psycho)
작성일
2008-09-30 11:24
조회수
3,851

 

 

PK

제품

판매처

개수

판매일

1

AAA

Z

1

2008-08-29

2

BBB

Z

2

2008-09-01

3

CCC

X

5

2008-09-01

4

AAA

X

4

2008-09-02

5

AAA

Y

3

2008-09-02

6

BBB

Y

4

2008-09-02

7

AAA

X

7

2008-01-03

 

일단 기본 테이블은 이렇게 생겼습니다. 데이터 집어넣는 프로그램도 나름대로 만들면서 좀 쉽게 끝날 줄 알았습니다만...제 실력으로는 많이 부족했나 봅니다. DB 생성 쿼리는 다음과 같이 정의 했습니다.


CREATE TABLE product

(

 product_seq            INT PRIMARY KEY AUTO_INCREMENT,

 product_name         VARCHAR(10) NOT NULL,

 product_connection VARCHAR(10) NOT NULL,

 product_count         INT NOT NULL,

 product_sales_date DATETIME NOT NULL

);


그리고 문제는 다음 두 가지입니다.  

※ 날짜별 제품 판매 개수. (결과)

 

판매일

AAA

BBB

CCC

2008-08-29

1

0

0

2008-09-01

0

2

5

2008-09-02

7

4

0

2008-01-03

7

0

0



여기서 각 제품에 관해서 개별적인 쿼리는 완성해서 결과를 출력했습니다만, 이렇게 전체적으로 결과를 보고 싶을 때 정의하려면 어떻게 쿼리문을 짜야 하는 지 잘 모르겠더군요. 초보라서 그런지 개념만 어렴풋이 알고 있지 자세하게는 알지 못하는 게 참 답답합니다.ㅠㅠ


두 번째 문제는 다음과 같습니다. 첫 번째 문제 풀었으면 할 수 있었을텐데...


※ 제품별 거래 현황. (결과)

 

제품

X

Y

Z

TOTAL

판매시작일

AAA

11

3

1

15

2008-08-29

BBB

0

4

2

6

2008-09-01

CCC

5

0

0

5

2008-09-01

TOTAL

16

7

3

26

-

거래시작일

2008-09-01

2008-09-02

2008-08-29

-

-



결론은 다음 두 형식으로 출력할 쿼리를 만드는 것입니다. 저도 머리 싸매면서 노력해 봤습니다만(근 이틀 째로군요..ㅠㅠ) 아무래도 시간 낭비일 것 같아 이해하고 넘아가는 게 나을 것 같아 이렇게 염치 없이 글 올립니다...;;


고수 분들의 조언 부탁드립니다. 아니, 제발요...

이 글에 대한 댓글이 총 1건 있습니다.

--test data

CREATE TABLE product

(

seq INT PRIMARY KEY AUTO_INCREMENT,

name VARCHAR(10) NOT NULL,

conn VARCHAR(10) NOT NULL,

count INT NOT NULL,

sales_date DATE NOT NULL

);

 

insert into product( name, conn, count, sales_date )

values( 'a', 'z', 1, '2008-08-29' )

, ( 'b', 'z', 2, '2008-09-01' )

, ( 'c', 'x', 5, '2008-09-01' )

, ( 'a', 'x', 4, '2008-09-02' )

, ( 'a', 'y', 3, '2008-09-02' )

, ( 'b', 'y', 4, '2008-09-02' )

, ( 'a', 'x', 7, '2008-01-03' )

;

 

 

--원하시던 select 문

select sales_date, sum( a ) AS a, sum( b ) AS b, sum( c ) AS c

from(

select sales_date

, CASE name when 'a' then tot else 0 end AS a

, CASE name when 'b' then tot else 0 end AS b

, CASE name when 'c' then tot else 0 end AS c

from (

select name, sales_date , sum( count ) AS tot

from product

group by name, sales_date

) AS aa

) AS bb

GROUP by sales_date;

 

첫번째 놈이 해결되면 두번째 건 해결되신다고 하셔서 두번째건 패스

 

 

참고: http://blog.naver.com/uook_/130031508980

우욱님이 2008-10-02 00:36에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
27817select 만 하는 DB 에서 쿼리 가장 빠르게 할수 있는 방법이 궁금합니다. [1]
정민채
2008-10-04
3988
27815긴 String 값을 일정한 단위로 쪼게서 저장하는 방법 있나요? [2]
초보
2008-10-01
3948
27814동적쿼리시 성능 및 질문 입니다.
정혁채
2008-09-30
3848
27813판매일 별 제품 판매 개수 및 제품별 거래 현황 구하기...인데 [1]
Psycho
2008-09-30
3851
27812다시 질문드립니다. 트랜잭션과 락킹 [2]
2008-09-26
4016
27811mysql limit 관련 질문입니다.
바다소년
2008-09-26
4665
278105.1에서 한글깨짐현상 [2]
초선
2008-09-25
4897
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.025초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다