쿼리문 질문입니다. (조건에 맞는 count 구하기??) 0 4 16,165

by 장범진 [SQL Query] 쿼리 [2014.02.11 14:42:55]


안녕하세요 쿼리문이 잘 안짜져서 질문 드립니다.

컬럼의 구조는
table : test
name age sex
aaa 20대
bbb 10대
ccc 30대
간략하게 이런식으로 쭈욱 구성되어 있습니다.

아래와 같은 쿼리문으로
select age, count(*) as cnt from test 
GROUP BY age order by cnt desc;
age cnt
10대 30
20대 20
30대 15
10대는 몇명, 20대는 몇명, 30대는 몇명 이렇게 총 인원수를 얻었습니다.

여기서 질문입니다. 위에처럼 총 인원수가 아니라
남여 성별 조건을 두어 카운트값을 구하고 싶습니다.
age cnt_1 cnt_2
10대 15 5
20대 10 20
30대 25 0
cnt_1: 남, cnt_2: 여
이런식으로 남녀 성별을 구별하여 카운트를 구하려면 어떻게 해야 할까요?
by 아발란체 [2014.02.11 14:48:51]
WITH T(id, age, sex) AS (
 SELECT 'aaa', '20대', '남' FROM DUAL UNION ALL
 SELECT 'bbb', '10대', '남' FROM DUAL UNION ALL
 SELECT 'ccc', '30대', '여' FROM DUAL
)
SELECT
 age, COUNT(*) AS cnt, SUM(DECODE(sex, '남', 1, 0)) AS male, SUM(DECODE(sex, '여', 1, 0)) AS female
FROM
 T 
GROUP BY
 age
ORDER BY
 cnt DESC

by 장범진 [2014.02.11 15:07:53]
정말 감사합니다. sum과 decode는 완전 생각도 못했던 거네요!!
부족함을 많이 느끼고 갑니다! 감사합니다!

by DarkBee [2014.02.11 15:36:21]
카운트로도 가능합니다.


COUNT(DECODE(sex, '남', 1)) AS male
, COUNT(DECODE(sex, '여', 1 )) AS femail

by 장범진 [2014.02.11 18:09:55]
답변 감사합니다! 많은 도움이 되었습니다!!
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입