[GROUP BY]
- 그룹별 데이터를 조회
- crime status에서 경찰서 별로 그룹화 하여 경찰서 이름을 조회
DISTINCT와 차이점은, ORDER BY도 쓸 수 있다는 점
SELECT police_station FROM crime_status
GROUP BY police_station;
이름 별로 그룹화 되어서 볼 수 있다.
- 경찰서 별로 그룹화 하여 총 발생 범죄 건수를 조회
SELECT police_station, SUM(case_number) 발생건수 FROM crime_status
WHERE status_type = '발생'
GROUP BY police_station
ORDER BY 발생건수 DESC;
- 경찰서 별 평균 범죄 검거 건수
SELECT police_station, AVG(case_number) 평균건수 FROM crime_status
WHERE status_type = '검거'
GROUP BY police_station
ORDER BY 평균건수 DESC;
- 경찰서 별 평균 범죄 발생 건수와 평균 범죄 검거 건수를 검색 ( status_type에는 검거와 발생 두 가지만 있다.)
SELECT police_station, status_type, AVG(case_number) 평균건수 FROM crime_status
GROUP BY police_station, status_type
ORDER BY 평균건수 DESC;
[HAVING]
- 조건에 집계함수가 포함되는 경우 WHERE 대신 HAVING 을 사용해야 한다.
- 경찰서 별로 발생한 범죄 건수 합이 4000건 보다 큰 경우
SELECT police_station, SUM(case_number) 범죄건수합 FROM crime_status
WHERE status_type = '발생'
GROUP BY police_station
HAVING 범죄건수합 > 4000;
확인
SELECT SUM(case_number) 범죄건수합 FROM crime_status
WHERE status_type = '발생' AND police_station = '영등포';
- 경찰서 별로 발생한 폭력과 절도의 범죄 건수 평균이 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 평균건수 > 2000;
'sql' 카테고리의 다른 글
[mysql] Scalar Functions (기초) (0) | 2022.07.07 |
---|---|
[mysql] SQL Subquery (0) | 2022.07.07 |
[mysql] 집계 함수 (기초) (0) | 2022.07.05 |
[sql] PRIMARY KEY, FOREGIN KEY (0) | 2022.07.05 |
[mysql] LIMIT 을 쓸 때는 ORDER BY 와 함께 쓰자. (0) | 2022.07.05 |