% mysql -h <엔드포인트> -P <port> -u <username> -p <databasename>
SELECT * FROM police_station;

SELECT * FROM crime_status;


COUNT : 총 갯수를 계산해 주는 함수
문법
SELECT COUNT(column)
FROM tablename
WHERE condition;
SELECT COUNT(*)
FROM police_station;

SELECT COUNT(DISTINCT police_station)
FROM crime_status;

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 crime_type LIKE '살인';

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 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='검거';

SELECT AVG(case_number)
FROM crime_status
WHERE police_station LIKE '중부' AND status_type LIKE '발생';

SELECT police_station, crime_type, status_type, case_number
FROM crime_status
WHERE police_station LIKE '중부' AND status_type LIKE '발생';

MIN : 숫자 칼럼 중 가장 작은 값을 찾아주는 함수
문법
SELECT MIN(column)
FROM tablename
WHERE condition;
SELECT MIN(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='발생';

SELECT MIN(case_number)
FROM crime_status
WHERE police_station LIKE '중부' AND status_type LIKE '검거';

SELECT police_station, crime_type, status_type, case_number
FROM crime_status
WHERE police_station LIKE '중부' AND status_type LIKE '검거';

MAX : 숫자 칼럼 중 가장 큰 값을 찾아주는 함수
문법
SELECT MAX(column)
FROM tablename
WHERE condition;
SELECT MAX(case_number)
FROM crime_status
WHERE crime_type LIKE '살인' AND status_type LIKE '검거';

SELECT police_station, crime_type, status_type, case_number
FROM crime_status
WHERE crime_type LIKE '살인' AND status_type LIKE '검거';

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

SELECT police_station, crime_type, status_type, case_number
FROM crime_status
WHERE police_station LIKE '강남' AND status_type LIKE '발생';

GROUP BY : 그룹화하여 데이터를 조회
문법
SELECT column1, column2, ...
FROM tablename
WHERE condition
GROUP BY column1, column2, ...
ORDER BY column1, column2, ...
SELECT police_station
FROM crime_status
GROUP BY police_station
ORDER BY police_station
LIMIT 5;

SELECT DISTINCT police_station
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;

SELECT police_station, avg(case_number) 평균검거건수
FROM crime_status
WHERE status_type LIKE '검거'
GROUP BY police_station
ORDER BY 평균검거건수 DESC
LIMIT 5;

SELECT police_station, status_type, avg(case_number)
FROM crime_status
GROUP BY police_station, status_type
LIMIT 6;

HAVING : 조건에 집계함수가 포함되는 경우 WHERE 대신 HAVING 사용
문법
SELECT column1, column2, ...
FROM tablename
WHERE condition
GROUP BY column1, column2, ...
HAVING condition (Aggregate Functions)
ORDER BY column1, column2, ...
SELECT police_station, sum(case_number) count
FROM crime_status
WHERE status_type LIKE '발생'
GROUP BY police_station
HAVING count > 4000;

SELECT sum(case_number)
FROM crime_status
WHERE status_type LIKE '발생' AND police_station LIKE '영등포';

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;

SELECT avg(case_number)
FROM crime_status
WHERE (crime_type LIKE '폭력' OR crime_type LIKE '절도')
AND status_type LIKE '발생' AND police_station LIKE '영등포';

SELECT *
FROM crime_status
WHERE (crime_type LIKE '폭력' OR crime_type LIKE '절도')
AND status_type LIKE '발생' AND police_station LIKE '영등포';
