집계 함수와 NULL
과목 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개 행이 영향을 받음)