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
운영게시판
최근게시물
MS-SQL Q&A 4206 게시물 읽기
No. 4206
group by 와 합에 관한 질문입니다.
작성자
작성일
2008-05-14 17:17
조회수
4,202

테이블 정보

 주문번호          주문일           금액               진행상태
order_num      reg_date        payment          statement
  0000000       2007-05-11        10000                   2
  1111111       2008-05-11        10000                   2
  1111111       2008-05-11        10000                   2
  2222222       2008-05-12        10000                   2
  3333333       2008-05-13        10000                   8
  4444444       2008-05-14        10000                   3 

데이타가 위와 같이 들어가 있고..

  년        주문건수         주문취소           주문완료             매출액
2007            1                    0                     1                   10000
2008            4                    1                     3                   30000

이런식으로 값을 뽑고 싶습니다.

주문번호가 같은것은 1개만 대상으로 하고 진행상태가 8 이면 취소건으로 봅니다. 
매출액은 취소건을 제외한 금액을 합산한 것이구요..

select datepart(yy,reg_date),count(distinct(order_num)) from 테이블 group by datepart(yy,reg_date)

이렇게 해서 년도와 주문건수는 뽑겠는데.. 주문취소와 매출액을 못뽑겠네요..
부탁드립니다..

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

 

create table 테이블(order_num char(7), reg_date char(10),payment int,statement tinyint)

insert 테이블

select '0000000','2007-05-11',10000,2 union all

select '1111111','2008-05-11',10000,2 union all

select '1111111','2008-05-11',10000,2 union all

select '2222222','2008-05-12',10000,2 union all

select '3333333','2008-05-13',10000,8 union all

select '4444444','2008-05-14',10000,3

 

---------------------------------------------------

select datepart(yy,reg_date) ,

       count(distinct(order_num)) 주문건수,

       count(distinct case when statement = 8 then order_num end) 주문취소,

       count(distinct case when statement <> 8 then order_num end) 주문완료,

       sum(payment * case statement when 8 then -1 else 1 end) 매출액

  from 테이블

 group by datepart(yy,reg_date)

 

/*

           주문건수        주문취소        주문완료        매출액

----------- ----------- ----------- ----------- -----------

2007        1           0           1           10000

2008        4           1           3           30000

경고: 집계 또는 다른 SET 연산에 의해 Null 값이 제거되었습니다.

 

(2 적용됨)

*/

최석준(beatchoi)님이 2008-05-14 17:53에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
4210쿼리 작성 도움 요청드려요.
이호영
2008-05-15
3704
4208Enterprise Manager 에서 트랜잭션 로그 삭제 [1]
나그네
2008-05-15
5349
4207쿼리 결과를 테이블명.컬럼명식으로 받고 싶어요
황근호
2008-05-15
3542
4206group by 와 합에 관한 질문입니다. [1]
2008-05-14
4202
4205MS-SQL 전문검색(Full-text search) 순위가중치 조절
손님
2008-05-14
4427
4204한글 영어 정렬문제...ㅜ.ㅜ [1]
제로
2008-05-13
4181
4203도움 부탁드림니다.
초보자
2008-05-13
3669
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다