(MySQL)Aggregate Function

지며리·2023년 1월 6일
0

Aggregate Function 종류


COUNT

select COUNT(*) from police_station;
  • police_station테이블의 모든 행은 총 몇 개인지 반환

SUM

select SUM(case_number) from crime_status where status_type = '발생';
  • crime_status에서 발생한 사건 수의 총합을 반환

select sum(case_number) from crime_status
where status_type = '검거' and police_station = '중부';
  • 중부경찰서에서 검거된 총 범죄건수 반환

AVG

select avg(case_number)
from crime_status
where crime_type like '폭력' and status_type = '검거';
  • 평균 폭력 검거 건수 반환

MIN

select Min(case_number)
from crime_status
where crime_type like '강도' and status_type = '발생';
  • 경찰서별 강도 발생 건수가 가장 적은 경우의 강도 발생 건수

MAX

select Max(case_number)
from crime_status
where crime_type like '살인' and status_type like '검거';
  • 살인이 가장 많이 검거 된 경우의 살인 검거 건수

GROUP BY

select column1, column2, ...
from table_name
where condition
group by column1, column2,..
order by column1, column2, ..;
  • select > from > where > group by > order by 순으로 작성
  • 그룹화하여 데이터를 조회

select police_station, sum(case_number) 발생건수
from crime_status
where status_type like '발생'
group by police_station
order by 발생건수 desc
limit 5;

  • 경찰서별로 총범죄발생 건수를 발생건수 순으로 내림차순 정렬하여 상위 5개만 조회

select police_station, status_type, avg(case_number)
from crime_status
group by police_station, status_type
limit 6;

  • 경찰서별 범죄상태별 평균 범죄 건수를 상위 6개만 검색

HAVING

select column1, column2,..
from table
where condition
group by column1, column2,..
having condition
order by column1, column2,..
  • group by 와 order by 사이에 위치
  • WHERE 절에는 집계함수를 포함시킬 수 없다
  • HAVING 절 사용

select police_station, sum(case_number) count
from crime_status
where status_type like '발생'
group by police_station
having count > 4000;

  • 경찰서별로 발생한 범죄 건수의 합이 4000건 보다 큰 경우 검색

select police_station, AVG(case_number) 
from crime_status
where status_type like '발생' and (crime_type in ('폭력','절도'))
group by police_station
having AVG(case_number) >=2000;

  • 경찰서 별로 발생한 폭력과 절도의 범죄 건수 평균이 2000 이상인 경우 검색
profile
쉽고 유익하게 널리널리

0개의 댓글