① COUNT (expr)
COUNT는 쿼리 결과 건수, 즉 전체 로우 수를 반환하는 집계 함수다. 테이블 전체 로우는 물론 WHERE 조건으로 걸러진 로우 수를 반환한다.
입력
SELECT COUNT(*)
FROM employees;
결과
COUNT(*)
--------
107
사원 테이블의 전체 로우 수가 107건임을 알 수 있다. 대부분은 COUNT(*) 형태로 사용하는데, ‘*’ 대신 컬럼명을 넣기도 한다.
입력
SELECT COUNT(employee_id)
FROM employees;
결과
COUNT(*)
--------
107
입력
SELECT COUNT(department_id)
FROM employees;
결과
COUNT(*)
--------
106
부서번호를 넣었더니 한 건이 줄어든 106건이 조회되었는데 그 이유는 사원 테이블에 부서번호가 없는, 즉 NULL인 로우가 한 건 존재하기 때문이다. COUNT 함수는 매개변수로 들어오는 expr이 NULL이 아닌 건에 대해서만 로우의 수를 반환한다. 또 다른 형태를 살펴 보자.
입력
SELECT COUNT(DISTINCT department_id)
FROM employees;
결과
COUNT(DISTINCTDEPARTMENT_ID)
----------------------------
11
이번에는 11건만 조회되었는데, 바로 DISTINCT를 붙였기 때문이다. DISTINCT를 붙이면 뒤따라 나오는 컬럼에 있는 유일한 값만 조회된다. 즉 사원 테이블에 있는 부서번호는 종류별로 총 11건이 있다는 뜻이다.
입력
SELECT DISTINCT department_id
FROM employees
ORDER BY 1;
결과
DEPARTMENT_ID
-------------------
10
20
30
40
50
60
70
80
90
100
110
12개의 행이 선택됨.
위 쿼리의 결과가 12건이 나온 이유는 NULL 값까지 포함되었기 때문이고 COUNT(DISTINCT department_id)는 NULL을 제외하므로 11건만 반환된다.