티스토리 뷰
📌 SQL COUNT
SQL에서 COUNT() 함수는 지정된 조건과 일치하는 행 수 또는 테이블의 총 행 수를 반환합니다.
특정 기준에 따라 레코드 수를 반환하기 위해 'SELECT' 문과 함께 사용할 수 있습니다.
📌 기본 사용법
SELECT COUNT(column_name)
FROM table_name
WHERE condition;
-
- COUNT(column_name): 지정된 열에서 NULL이 아닌 값의 개수를 계산합니다.
- COUNT(*): NULL 값이 있는 행을 포함하여 테이블의 모든 행을 계산합니다.
📌 사용 예제
다음 데이터가 포함된 'employees' 테이블을 생각해 보세요.
1. 테이블의 모든 행 계산
employees 테이블의 모든 행을 계산하려면 COUNT(*)를 사용합니다.
SELECT COUNT(*)
FROM employees;
결과 :
5
-
- 'employees' 테이블에 5개의 행이 있으므로 이 쿼리는 '5'를 반환합니다.
2. 특정 열에서 NULL이 아닌 값 계산
'HR' 부서에 직원이 몇 명 있는지 계산하려면 다음과 같이 작성합니다.
SELECT COUNT(department)
FROM employees
WHERE department = 'HR';
결과 :
2
-
- 여기서 COUNT는 department 열이 NULL이 아니고 HR' 조건과 일치하는 행만 계산합니다.
📌 다양한 사용 사례
1. COUNT(*)를 사용하여 모든 행 개수 계산
-
- COUNT(*)는 NULL 값을 포함하여 전체 테이블의 행 수를 계산합니다.
- 내용에 관계없이 모든 항목을 계산하려는 경우 유용합니다.
SELECT COUNT(*)
FROM employees;
2. COUNT(column_name)을 사용하여 NULL이 아닌 값 계산
-
- COUNT(column_name)을 사용하면 지정된 열에 NULL이 아닌 값이 있는 행만 계산됩니다.
- 열에 NULL 값이 포함된 경우 해당 행은 계산에서 제외됩니다.
SELECT COUNT(name)
FROM employees;
-
- 'name' 열에 'NULL' 값이 없으면 테이블의 총 직원 수가 계산됩니다.
- 일부 이름이 NULL인 경우 해당 행은 계산되지 않습니다.
3. 고유 값에 COUNT(DISTINCT 컬럼_이름) 사용
-
- COUNT(DISTINCT 컬럼_이름)을 사용하여 열의 고유 값 수를 계산할 수도 있습니다.
SELECT COUNT(DISTINCT department)
FROM employees;
-
- 중복을 제외하고 얼마나 많은 부서가 존재하는지 계산합니다.
4. COUNT()를 사용한 그룹화
-
- COUNT()를 GROUP BY 절과 결합하여 일부 기준에 따라 그룹의 행 수를 계산할 수 있습니다.
예: 각 부서에 직원 수를 계산합니다.
SELECT department, COUNT(*)
FROM employees
GROUP BY department;
-
- '부서'별로 행을 그룹화하고 각 부서의 직원 수를 계산합니다.
📌 GOOD 사용법
1. COUNT()와 HAVING 결합
- 데이터를 그룹화할 때 개수를 기준으로 특정 그룹을 필터링할 수 있습니다.
- HAVING 절을 사용하여 수행할 수 있습니다.
예: 직원이 두 명 이상인 부서 찾기
SELECT department, COUNT(*)
FROM employees
GROUP BY department
HAVING COUNT(*) > 1;
결과 :
HR | 2
Engineering | 2
- HAVING COUNT(*) > 1을 사용하여 직원이 2명 미만인 부서를 필터링합니다.
📌 BAD 사용법
1. 데이터 무결성을 고려하지 않고 NULL 열에 COUNT() 사용
-
- COUNT(column_name)을 사용하는 경우 열 값이 NULL인 행은 계산되지 않는다는 점을 기억하세요.
2. COUNT(*)와 COUNT(column_name) 혼동하기
- 행 계산에는 둘 다 사용할 수 있지만 COUNT(*)는 모든 행을 계산하는 반면 COUNT(column_name)은 열 값이 NULL이 아닌 행만 계산합니다.
반응형