SQL 15 - 집계함수

민정윤·2024년 10월 8일
0

✍️ Count Aggregate Function : 집계함수

COUNT : 개수 세기

기본구조

SELECT COUNT(column) 
FROM tablename
WHERE condition;
예제)
# police_station 테이블에서 개수 세기
select count(*)
from police_station

# crime_status에서 경찰서 총 개수
select count(distinct police_station) 
from crime_status;

SUM : 합계 계산

기본구조

SELECT SUM(column) 
FROM tablename
WHERE condition;
예제)
# 범죄 총 발생 건수!
SELECT SUM(case_number) 
FROM crime_status
WHERE status_types='발생';

AVG 평균값 / MIN 최소값 / MAX 최대값

기본구조

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='검거';

GROUP BY : 그룹별 데이터 조회

기본구조

SELECT col1, col2 
FROM tablename
WHERE condition
GROUP BY col1, col2, ...
ORDER BY col1, col2,...;
예제)
  • crime_status에서 경찰서별로 그룹화하여 경찰서 이름 조회
# 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

✍️ HAVING : aggregate function 포함 가능한 조건문

기본구조

SELECT col1, col2 
FROM tablename
WHERE condition
GROUP BY col1, col2, ...
HAVING condition (집계함수) 
ORDER BY col1, col2,...;

🚨 where절에는 조건에 집계함수 사용 X
🚨 대신에 having에 사용 O

예제)
  • 경찰서 별로 발생 건수의 합이 4000건 보다 큰 경우 검색
SELECT police_station, SUM(case_number) AS count
FROM crime_status
WHERE status_type LIKE '발생'
GROUP BY police_station
HAVING count > 4000;

조건에 집계함수 포함 (alias로 별칭 활용 가능)

0개의 댓글