본문 바로가기
mySql

[mysql] Aggregate Functions_ count / sum / avg / min / max / group by / having

by ram_ 2022. 12. 10.

 

01. COUNT

select count(distinct police_station) from crime_status;

crime_status table의 police_station 칼럼의 갯수

distinct는 unique와 같은 기능을 한다.

 


 

02. SUM

select sum(case_number) from crime_status where status_type="발생";

crime_status table의 case_number 중 status_type이 "발생"인 경우의 총 합

-> 범죄 총 발생 건수

select sum(case_number) from crime_status where crime_stype="살인";

crime_status table의 case_number 중 status_stype이 "살인"인 경우의 총 합

-> 살인 총 건수

select sum(case_number) from crime_status where crime_stype="살인" and status_type like "발생";

살인 사건 중, status_type이 발생인 경우의 총 합

-> 살인 총 발생 건수

 

select sum(case_number) 
from crime_status 
where police_station = "중부" and status_type = "검거";

-> 중부 경찰서에서 검거된 총 범죄 건수

mysql> select sum(case_number) from crime_status
    -> where crime_stype = "강도" and ( police_station LIKE '종로' or  police_station LIKE '남대문');

-> 서울종로경찰서와 서울남대문경찰서에서 강도 사건 발생 건수 합

 


 

03. AVG

mysql> select avg(case_number)
    -> from crime_status
    -> where crime_stype like '폭력' and status_type='검거';

-> 경찰서 별 평균 폭력 검거 건수

mysql> select avg(case_number) 
    -> from crime_status
    -> where police_station like '중부' and status_type like '발생';

-> 중부경찰서 범죄 평균 발생 건수

 


 

04. MIN

mysql> select min(case_number)
    -> from crime_status
    -> where crime_stype like '강도' and status_type='발생';

-> 강도 발생 건수가 가장 적은 경우의 건수

mysql> select case_number, crime_stype, status_type
    -> from crime_status
    -> where crime_stype like '강도' and status_type = '발생';

위 코드로 직접 확인 가능하다.

 


 

05. MAX

mysql> select max(case_number)
    -> from crime_status
    -> where crime_stype like '살인' and status_type like '검거';

-> 살인이 가장 많이 검거된 건수

mysql> select *
    -> from crime_status
    -> where crime_stype like '살인' and status_type like '검거';

해당 조건의 전체 리스트 불러오면서 직접 확인 가능하다.

 

mysql> select max(case_number)
    -> from crime_status
    -> where police_station like '강남' and status_type like '발생';

-> 강남경찰서에서 가장 많이 발생한 건수는?

 


 

06. GROUP BY 

: 그룹화하여 데이터를 조회

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

-> 경찰서 별로 총 발생 건수를 검색


 

07. HAVING

: 조건에 집계함수가 포함되는 경우 WHERE 대신 HAVING 사용

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

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

'mySql' 카테고리의 다른 글

[MySql] 기본 쿼리문  (0) 2023.01.31
[MySql] 정의  (0) 2023.01.31
[mysql] primary key / foreign key 실습  (0) 2022.12.10
[mysql] foreign key 예제  (0) 2022.12.10
[mysql] Foreign Key  (0) 2022.12.09