[SQL] 15-Aggregate Functions

김지현·2024년 6월 16일

SQL

목록 보기
14/16

📂 Aggregate Functions (집계함수)

  • 여러 칼럼 혹은 테이블 전체 칼럼으로부터 하나의 결과값을 반환하는 함수
FunctionDescription
COUNT총 갯수를 계산해주는 함수
SUM합계 계산해주는 함수
AVG평균 계산해주는 함수
MIN가장 작은 값 찾는 함수
MAX가장 큰 값 찾는 함수
FIRST첫번째 결과값 리턴하는 함수
LAST마지막 결과값 리턴하는 함수

📍 COUNT

  • 총 갯수를 계산해주는 함수
SELECT COUNT(column)
FROM tablename
WHERE condition;

(예제)

  • crime_status 테이블에서 경찰서는 총 몇 군데?
-- 중복 제거
SELECT COUNT(distinct police_station) FROM crime_status;
  • crime_type은 총 몇 가지?
SELECT COUNT(distinct crime_type) FROM crime_status;

📍 SUM

  • 숫자 컬럼의 합계를 계산해주는 함수
SELECT SUM(column)
FROM tablename
WHERE condition;

(예제)

  • 범죄 총 발생 건수는?
SELECT SUM(case_number) FROM crime_status 
WHERE status_type = '발생';
  • 중부 경찰서에서 검거된 총 범죄 건수는?
SELECT SUM(case_number) 
FROM crime_status 
WHERE status_type = '검거' and police_station = '중부';

📍 AVG

  • 숫자 컬럼의 평균을 계산해주는 함수
SELECT AVG(column)
FROM tablename
WHERE condition;

(예제) 평균 폭력 검거 건수는?

SELECT AVG(case_number) FROM crime_status 
WHERE status_type = '검거' and crime_type LIKE '폭력';

📍 MIN

  • 숫자 컬럼 중 가장 작은 값을 찾아주는 함수
SELECT MIN(column)
FROM tablename
WHERE condition;

(예제) 강도 발생 건수가 가장 적은 경우는 몇 건?

SELECT MIN(case_number) FROM crime_status
WHERE crime_type LIKE '강도' and status_type='발생';

📍 MAX

  • 숫자 컬럼 중 가장 큰 값을 찾아주는 함수
SELECT MAX(column)
FROM tablename
WHERE condition;

(예제) 강남 경찰서에서 가장 많이 발생한 범죄 건수는?

SELECT MAX(case_number) FROM crime_status
WHERE police_station LIKE '강남' and status_type='발생';

📍 GROUP BY

  • 그룹화하여 데이터 조회
    ✔ DISTINCT 사용하는 경우 ORDER BY 사용 불가
SELECT column1, column2, ...
FROM tablename
WHERE condition
GROUP BY column1, column2, ...
ORDER BY column1, column2, ... ;

(예제) 경찰서별로 총 발생 범죄 건수 조회

SELECT police_station, sum(case_number) 발생건수
FROM crime_status
WHERE status_type = '발생'
GROUP BY police_station
ORDER BY 발생건수 DESC
LIMIT 5;

📍 HAVING

  • 조건에 집계함수가 포함되는 경우 WHERE 대신 HAVING 사용
SELECT column1, column2, ...
FROM tablename
WHERE condition
GROUP BY column1, column2, ...
HAVING condition (Aggregate Functions)
ORDER BY column1, column2, ... ;

(예제) 경찰서별로 발생한 범죄 건수의 합이 4000건보다 큰 경우 조회

SELECT police_station, sum(case_number) count
FROM crime_status
WHERE status_type = '발생'
GROUP BY police_station
HAVING count > 4000;

0개의 댓글