과목 II SQL 기본 및 활용
제1장 SQL 기본
제7절 GROUP BY, HAVING 절
5. 집계 함수와 NULL
[예제] 팀별 포지션별 FW, MF, DF, GK 포지션의 인원수와 팀별 전체 인원수를 구하는 SQL 문장을 작성한다. 데이터가 없는 경우는 0으로 표시한다.
SELECT TEAM_ID, ISNULL(SUM(CASE WHEN POSITION = 'FW' THEN 1 END), 0) FW, ISNULL(SUM(CASE WHEN POSITION = 'MF' THEN 1 END), 0) MF, ISNULL(SUM(CASE WHEN POSITION = 'DF' THEN 1 END), 0) DF, ISNULL(SUM(CASE WHEN POSITION = 'GK' THEN 1 END), 0) GK, COUNT(*) SUM FROM PLAYER GROUP BY TEAM_ID; |
[실행결과]
경고: 집계 또는 다른 SET 작업에 의해 Null 값이 제거되었습니다.
(15개 행이 영향을 받음)
[예제] GROUP BY 절 없이 전체 선수들의 포지션별 평균 키 및 전체 평균 키를 출력할 수도 있다.
SELECT ROUND(AVG(CASE WHEN POSITION = 'MF' THEN HEIGHT END),2) 미드필더, ROUND(AVG(CASE WHEN POSITION = 'FW' THEN HEIGHT END),2) 포워드, ROUND(AVG(CASE WHEN POSITION = 'DF' THEN HEIGHT END),2) 디펜더, ROUND(AVG(CASE WHEN POSITION = 'GK' THEN HEIGHT END),2) 골키퍼, ROUND(AVG(HEIGHT),2) 전체평균키 FROM PLAYER; |
[실행결과]
경고: 집계 또는 다른 SET 작업에 의해 Null 값이 제거되었습니다.
(1개 행이 영향을 받음)
'SQL 전문가 가이드' 카테고리의 다른 글
SELECT 문장 실행 순서 (0) | 2013.10.08 |
---|---|
ORDER BY 정렬 (0) | 2013.10.07 |
CASE 표현을 활용한 월별 데이터 집계 (0) | 2013.10.01 |
HAVING 절 (0) | 2013.09.30 |
GROUP BY 절 (0) | 2013.09.30 |