엑셀 함수처럼 데이터를 집계하는 함수들입니다.
SELECT구문에서 자주 사용되며, 그룹화(GROUP BY)와도 함께 사용됩니다.
SELECT COUNT(*) FROM players;
COUNT(*)는 NULL 포함 모든 행을 셈 *을 사용할 수 있는 집계 함수는 COUNT만 가능SELECT COUNT(birthYear) FROM players;
NULL 제외하고 birthYear이 존재하는 행만 셈COUNT(*)보다 작을 수 있음SELECT DISTINCT birthCity FROM players;
SELECT COUNT(DISTINCT birthCity) FROM players;
SELECT DISTINCT COUNT(birthCity)는 의도와 다르게 동작함!SELECT DISTINCT birthYear, birthMonth, birthDay
FROM players
ORDER BY birthYear;
SELECT SUM(weight) FROM players;
SELECT AVG(weight) FROM players;
SUM: 전체 weight의 합계 AVG: NULL 제외 평균값-- NULL은 0으로 처리하여 평균 계산
SELECT AVG(CASE WHEN weight IS NULL THEN 0 ELSE weight END)
FROM players;
NULL을 0으로 간주하면 평균값이 낮아질 수 있음SELECT MIN(weight), MAX(weight)
FROM players;
SELECT MIN(debut), MAX(debut)
FROM players;
| 함수 | 설명 | NULL 처리 |
|---|---|---|
| COUNT(*) | 전체 행 수 | 포함 |
| COUNT(col) | 해당 열의 NULL 제외한 개수 | 제외 |
| SUM(col) | 값의 합 | 제외 |
| AVG(col) | 평균 | 제외 |
| MIN(col) | 가장 작은 값 | 제외 |
| MAX(col) | 가장 큰 값 | 제외 |
| DISTINCT | 중복 제거 | 해당 함수와 함께 사용해야 효과적 |
SELECT COUNT(DISTINCT birthCity)
FROM players;
SELECT AVG(CASE WHEN weight IS NULL THEN 0 ELSE weight END)
FROM players;
SELECT MIN(debut), MAX(finalGame)
FROM players;
DISTINCT는 집계 함수 내부에서 사용해야 의미가 있다.MIN, MAX는 숫자뿐만 아니라 날짜, 문자열에도 적용 가능하다.CASE와 결합하여 조건부 집계도 가능하다.SELECT AVG(CASE
WHEN weight IS NULL THEN 0
ELSE weight
END) AS adjustedAvgWeight
FROM players;