[SQL] 집계 함수

jane05·2023년 11월 5일
0
post-thumbnail
  • 실습 환경 : AWS, zerobase
  • police_station
  • crime_status

0️⃣ Aggregate Functions

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

1️⃣ COUNT

  • 총 갯수를 계산해 주는 함수
SELECT COUNT(column)
FROM tablename
WHERE conditon;
  • police_station 테이블에서 데이터는 모두 몇 개?
SELECT COUNT(*)
FROM police_station;
  • crime_status 테이블에서 경찰서는 총 몇군데?
SELECT COUNT(DISTINCT police_station)
FROM crime_station;

  • crime_type 은 총 몇 가지?
SELECT COUNT(DISTINCT crime_type)
FROM crime_status;

2️⃣ SUM

  • 숫자 칼럼의 합계를 계산해주는 함수
SELECT SUM(column)
FROM tablename
WHERE condition;
  • 범죄 총 발생건수는?
SELECT SUM(case_number)
FROM crime_status
WHERE status_type='발생';

  • 살인의 총 발생건수는?
SELECT SUM(case_numbr)
FROM crime_status
WHERE status_type='발생' AND crime_type LIKE '살인';

3️⃣ AVG

  • 숫자 칼럼의 평균을 계산해주는 함수
SELECT AVG(column)
FROM tablename
WHERE condition;
  • 평균 폭력 검거 건수는?

    SELECT AVG(case_number)
    FROM crime_status
    WHERE crime_type LIKE '폭력' AND status_type='검거';
    • 확인: 그냥 확인 작업
      SELECT police_station, crime_type, status_type, case_number
      FROM crime_status
      WHERE crime_type LIKE '폭력' AND status_type='검거';

4️⃣ MIN

  • 숫자 칼럼 중 가장 작은 값을 찾아주는 함수
SELECT MIN(column)
FROM table
WHERE condition;
  • 강도 발생 건수가 가장 적은 경우 몇 건?
SELECT MIN(case_number)
FROM crime_status
WHERE crime_type LIKE '강도' AND status_type='발생;

5️⃣ MAX

  • 숫자 칼럼 중 가장 큰 값을 찾아주는 함수
SELECT MAX(column)
FROM table
WHERE condition;
  • 살인이 가장 많이 검거된 건수는?
SELECT MAX(case_number)
FROM crime_status
WHERE crime_type LIKE '살인' AND status_type LIKE '검거';

6️⃣ GROUP BY

  • 그룹화하여 데이터를 조회
SELECT column2, column2, ...
FROM table
WHERE condition
GROUP BY column1, column2, ...
ORDER BY column1, column2, ...;
  • crime_status 에서 경찰서별로 그룹화 하여 경찰서 이름을 조회
SELECT police_sation
FROM crime_status
GROUP BY police_station
ORDER BY police_station
LIMIT 5;

  • 경찰서 종류를 검색 - DISTINCT 를 사용하는 경우 (ORDER BY 를 사용할 수 없음) 🔥
SELECT DISTINCT police_sation
FROM crime_status LIMIT 5;

  • 경찰서 별로 총 발생 범죄 건수를 검색
SELECT  police_station, sum(case_number) 발생건수
FROM crime_status
WHERE status_type LIKE '발생'
GROUP BY police_station
ORDER BY  발생건수 DESC
LIMIT 5;

7️⃣ HAVING - 조건에 집계함수가 포함되는 경우(WHERE 대신)

  • 조건에 집계함수가 포함되는 경우 WHERE 대신 HAVING 사용
SELECT column1, column2, ...
FROM table
WHERE condition
GROUP BY colunn1, column2, ...
HAVING condition (Aggregate Functions)
ORDER BY column1, column2, ...
  • 경찰서 별로 발생한 범죄 건수의 합이 4000 건보다 보다 큰 경우를 검색
SELECT police_sation, sum(case_number) couont
FROM crime_status
WHERE status_type LIKE '발생'
GROUP BY police_station
HAVING count > 4000;

  • 경찰서 별로 발생한 폭력과 절도의 범죄 건수 평균이 2000 이상인 경우를 검색
SELECT police_station, AVG(case_number)
FROM crime_status
WHERE (crime_type LIKE '폭력' OR crime_type LIKE '절도')
	AND status_type LIKE '발생'
GROUP BY police_station
HAVING AVG(case_number) >= 2000;

profile
데이터 분석 공부 기록

0개의 댓글