여러 칼럼 혹은 테이블 전체 칼럼으로부터 하나의 결과값을 반환하는 함수
총 갯수를 계산해 주는 함수
SELECT COUNT(column)
FROM table_name
WHERE condition
COUNT 예제1 : police_station 테이블에서 데이터는 모두 몇 개?
select count(*) from police_station;
COUNT 예제2 : crime_status 테이블에서 경찰서는 총 몇군데?
select count(distinct police_station) from crime_status;
COUNT 예제3 : crime_type 은 총 몇 가지?
select count(distinct crime_type) from crime_status;
select distinct crime_type from crime_status;
숫자 칼럼의 합계를 계산해주는 함수
SELECT SUM(column)
FROM table_name
WHERE condition;
SUM 예제1 : 범죄 총 발생건수는?
SELECT SUM(case_number) FROM crime_status WHERE status_type='발생';
SUM 예제2 : 살인의 총 발생건수는?
select sum(case_number) from crime_status where status_type='발생'
and crime_type='살인';
SUM 예제3 : 중부 경찰서에서 검거된 총 범죄 건수는?
select sum(case_number)
from crime_status
where status_type='검거' and police_station='중부';
숫자 칼럼의 평균을 계산해주는 함수
SELECT AVG(column)
FROM table_name
WHERE condition;
AVG 예제1 : 평균 폭력 검거 건수는?
SELECT AVG(case_number)
FROM crime_status
WHERE crime_type='폭력' AND status_type='검거';
AVG 예제2 : 중부경찰서 범죄 평균 발생 건수
select avg(case_number)
from crime_status
where police_station='중부' and status_type='발생';
숫자 칼럼 중 가장 작은 값을 찾아주는 함수
SELECT MIN(column)
FROM table_name
WHERE condition;
MIN 예제1 : 강도 발생 건수가 가장 적은 경우 몇 건?
select min(case_number)
from crime_status
where crime_type='강도' and status_type='발생';
MIN 예제2 : 중부경찰서에서 가장 낮은 검거 건수는?
select min(case_number)
from crime_status
where police_station='중부' and status_type='검거';
숫자 칼럼 중 가장 큰 값을 찾아주는 함수
SELECT MAX(column)
FROM table_name
WHERE condition;
MAX 예제1 : 살인이 가장 많이 검거된 건수는?
select max(case_number)
from crime_status
where crime_type='살인' and status_type='검거';
MAX 예제2 : 강남 경찰서에서 가장 많이 발생한 범죄 건수는?
select max(case_number)
from crime_status
where police_station='강남' and status_type='발생';
그룹화하여 데이터를 조회
SELECT column1, column2, ...
FROM table_name
WHERE condition
GROUP BY column1, column2, ...
ORDER BY column1, column2, ...;
GROUP BY 예제1 : crime_status 에서 경찰서별로 그룹화 하여 경찰서 이름을 조회
select police_station
from crime_status
group by police_station
order by police_station
limit 5;
경찰서 종류를 검색 - DISTINCT 를 사용하는 경우 (ORDER BY 를 사용할 수 없음)
select distinct police_station
from crime_status
limit 5;
GROUP BY 예제2 : 경찰서 별로 총 발생 범죄 건수를 검색
select police_station, sum(case_number) 발생건수
from crime_status
where status_type='발생'
group by police_station
order by 발생건수 desc
limit 5;
GROUP BY 예제3 : 경찰서 별로 평균 범죄 검거 건수를 검색
select police_station, avg(case_number) 평균검거건수
from crime_status
where status_type='검거'
group by police_station
order by 평균검거건수
limit 5;
select police_station, avg(case_number) 평균검거건수
from crime_status
where status_type='검거'
group by police_station
order by 평균검거건수 desc
limit 5;
GROUP BY 예제4 : 경찰서 별 평균 범죄 발생건수와 평균 범죄 검거 건수를 검색
select police_station, status_type, avg(case_number) 평균건수
from crime_status
group by police_station, status_type
limit 6;
조건에 집계함수가 포함되는 경우 WHERE 대신 HAVING 사용
SELECT column1, column2, ...
FROM table_name
WHERE condition
GROUP BY column1, column2, ...
HAVING condition (Aggregate Functions)
ORDER BY column1, column2, ...;
HAVING 예제1 : 경찰서 별로 발생한 범죄 건수의 합이 4000 건보다 보다 큰 경우를 검색
select police_station, sum(case_number) count
from crime_status
where status_type = '발생'
group by police_station
having count > 4000;
HAVING 예제2 : 경찰서 별로 발생한 폭력과 절도의 범죄 건수 평균이 2000 이상인 경우를 검색
select police_station, avg(case_number)
from crime_status
where crime_type in ('폭력', '절도') and status_type='발생'
group by police_station
having avg(case_number) >= 2000
오랜만에 SQL하는 거라 기억이 잘 안나지만 EDA 할 때 보단 마음이 훨씬 편하다.
적당히 해도 이해는 잘 되니까
물론 VS CODE 랑 연결할땐 계속 ERROR나서 화가 났다,,, 어려워 어려워
또 과제나오면 쉽지 않겠지ㅠㅠㅠㅠㅠㅠ
"이 글은 제로베이스 데이터 취업 스쿨 강의를 듣고 작성한 내용으로 제로베이스 데이터 취업 스쿨 강의 자료 일부를 발췌한 내용이 포함되어 있습니다."