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() 버튼을 클릭하여 작성 하시면 됩니다.