✍️ Count Aggregate Function : 집계함수
기본구조
SELECT COUNT(column)
FROM tablename
WHERE condition;
# police_station 테이블에서 개수 세기
select count(*)
from police_station
# crime_status에서 경찰서 총 개수
select count(distinct police_station)
from crime_status;
기본구조
SELECT SUM(column)
FROM tablename
WHERE condition;
# 범죄 총 발생 건수!
SELECT SUM(case_number)
FROM crime_status
WHERE status_types='발생';
기본구조
SELECT AVG / MIN / MAX(column)
FROM tablename
WHERE condition;
- AVG
# 평균 폭력 검거 건수는?
SELECT AVG(case_number)
FROM crime_status
WHERE crime_type LIKE '폭력' AND status_types='검거';
- MIN
# 강도 발생 건수가 가장 적은 경우는 몇 건인가?
SELECT MIN(case_number)
FROM crime_status
WHERE crime_type LIKE '강도' AND status_types='발생';
- MAX
# 살인이 가장 많이 검거된 건수?
SELECT MAX(case_number)
FROM crime_status
WHERE crime_type LIKE '살인' AND status_types='검거';
기본구조
SELECT col1, col2
FROM tablename
WHERE condition
GROUP BY col1, col2, ...
ORDER BY col1, col2,...;
# 01
SELECT police_station
FROM crime_status
GROUP BY police_station
ORDER BY police_station
LIMIT 5;
# 02
SELECT DISTICNT police_station
FROM crime_status
LIMIT 5;
🚨DISTINCT로 중복 제거해서 결과 조회 가능 BUT 정렬 불가능
🚨DISTINCT 사용하면 ORDER BY 사용 못 함
SELECT police_station, status_type, AVG(case_number)
FROM crime_status
GROUP BY police_station, status_type
LIMIT 6;
✍️ HAVING : aggregate function 포함 가능한 조건문
기본구조
SELECT col1, col2
FROM tablename
WHERE condition
GROUP BY col1, col2, ...
HAVING condition (집계함수)
ORDER BY col1, col2,...;
🚨 where절에는 조건에 집계함수 사용 X
🚨 대신에 having에 사용 O
SELECT police_station, SUM(case_number) AS count
FROM crime_status
WHERE status_type LIKE '발생'
GROUP BY police_station
HAVING count > 4000;
조건에 집계함수 포함 (alias로 별칭 활용 가능)