집합쿼리 조건 0 2 1,122

by 통합문서 [SQLServer] [2016.08.15 12:52:00]


테이블 값이 아래와 같이 있을경우에 ID별로 그룹바이하여 ID에 해당하는 총건수와 status가 '2'인 값의 개수를 구하고 싶습니다.

id status
100 1
200 1
100 2
100 2
200 2
300 2

원하는 결과
 

100 3건 2건
200 2건 1건
300 1건 1건

select id, count(id) from tab 하면 총건수는 구할 수 있는데 id별로 상태값 '2'인 개수(빨간부분)는 어떻게 구해야할까요??

 

by jkson [2016.08.16 08:27:39]

count(decode(status,'2',1))


by 탱 [2016.08.18 15:43:14]
WITH T AS
(
    SELECT 100 AS ID, 1 AS STATUS FROM DUAL UNION ALL
    SELECT 200 AS ID, 1 AS STATUS FROM DUAL UNION ALL
    SELECT 100 AS ID, 2 AS STATUS FROM DUAL UNION ALL
    SELECT 100 AS ID, 2 AS STATUS FROM DUAL UNION ALL
    SELECT 200 AS ID, 2 AS STATUS FROM DUAL UNION ALL
    SELECT 300 AS ID, 2 AS STATUS FROM DUAL
)
SELECT ID, COUNT(ID) CNT
FROM T
WHERE 1=1
AND STATUS = 2
GROUP BY ID
ORDER BY ID;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입