SQL ( 집계함수 )

SQL ( 집계함수 )

다음과 같은 테이블들이 주어졌을 때,

프로그래밍언어

일련번호(int) 명칭(varchar) 비고(varchar)
1 java 검토 중
2 javascript NULL
3 c# 검토 완료
4 python 검토 전

시험신청현황

학생ID(int) 이름(varchar) 신청과목일련번호(int)
1001 김개똥 1
1002 홍길동 3
1003 아무개 4
SELECT COUNT( TST.학생ID )
  FROM 프로그래밍언어 AS PGM
  LEFT JOIN 시험신청현황 AS TST ON ( PGM.일련번호 = TST.신청과목일련번호 )
;
-- 결과 : 3
-- 집계함수는 NULL에 대해서는 SKIP을 한다.
-- JOIN이 완료된 중간 결과테이블의 전체 행 수는 4행이지만,
-- 'TST.학생ID' 컬럼에 NULL 1건이 포함되어 있다.
SELECT COUNT( 1 )
  FROM 프로그래밍언어 AS PGM
  LEFT JOIN 시험신청현황 AS TST ON ( PGM.일련번호 = TST.신청과목일련번호 )
;
-- 결과 : 4
-- JOIN이 완료된 중간 결과테이블의 전체 행 수가 4행이라서
-- 무조건 행 수를 센다.
-- 주의사항 : 일반적으로 OUTER JOIN문에서의 COUNT(1) 형식의 집계함수 사용은 굉장히 위험한 집계방법이며 논리 오류나 혼란을 일으킬 수 있으므로 주의해야 한다.

Written with StackEdit.