-
통계: 최대 / 최소 / 평균 / 개수
👉 데이터 분석의 목적: 쌓여있는 날것의 데이터 → 의미를 갖는 '정보'로의 변환
- 데이터베이스 테이블에 저장된 데이터: 쌓여있는 날것의 데이터
- 가장 많은 Like를 받은 사람의 이름, 전체 신청자수, 평균 연령: 의미있는 '정보'
👉 더 나아가면? '범주 (category)' 각각의 정보가 궁금할 수 있습니다
- 예) 과목별 신청자 평균 연령, 과목별 신청자수, 성씨별 회원수 등
1. 동일한 범주의 데이터를 묶어주는 Group by ('~별' 표현에 붙임)
동일한 범주를 갖는 데이터를 하나로 묶어서, 범주별 통계를 내주는 것을 의미해요. Group by를 이용하면
1) 같은 성씨의 데이터를 하나로 묶고
2) 각 성씨의 회원수를 구할 수 있어요.
group by = 성씨 별, 결제수단 별, 주차 별 등등. (~별)
select 범주별로 세어주고 싶은 필드명, count(*) from 테이블명
group by 범주별로 세어주고 싶은 필드명;
select * from users -> user 의 각 name별로 정리됨.
group by name*
select name, count (*) from users -> name별로 각각의 숫자가 정리됨.
group by name
select * from checkins -> checkins 의 각 week(주차)별로 정리됨.
group by week
select week, count(*) from checkins ->주차 (week)별로 각각의 숫자가 정리
group by week
최솟값 min, 최댓값 max, 평균값 avg, 합계 sum
select 범주가 담긴 필드명, min (최솟값을 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명;select week, min(likes) from checkins -> 주차별로 likes를 받은 최솟값
group by week
select week, max(likes) from checkins -> 주차별로 likes를 받은 최댓값
group by week
select week, avg(likes) from checkins -> 평균값
group by week
select week, round(avg(likes),2) from checkins -> 평균값은 소수점이 너무 길어지므로, 소수점2번째자리까지 표
group by week
select week, sum(likes) from checkins -> 주차별 likes의 총 합계
group by week
2. 깔끔하게 데이터를 정렬해보자: Order by
select * from 테이블명 order by 정렬의 기준이 될 필드명;
select name, count(*) from users
group by name
select name, count(*) from users -> 밑에 order by 쓰면 순서대로 정렬 (오름차순)
group by name
order by count(*)
select name, count(*) from users -> 숫자 내림차순 정렬
group by name
order by count(*) desc
select payment_method, count(*) from orders -> 결제수단별 숫자
group by payment_method
select payment_method, count(*) from orders -> 웹개발종합반에서의 결제수단별 숫자
where course_title = '웹개발 종합반'
group by payment_method
select payment_method, count(*) from orders -> 오름차순 정렬
where course_title = '웹개발 종합반'
group by payment_method
order by count(*)
select * from users -> 이메일 abc순 정렬
order by email
select * from users
order by created_at
[퀴즈] 1. 앱개발 종합반의 결제수단별 주문건수 세어보기
[퀴즈] 2. Gmail 을 사용하는 성씨별 회원수 세어보기
[퀴즈] 3. course_id별 '오늘의 다짐'에 달린 평균 like 개수 구해보기1. select payment_method, count(*) from orders
where course_title = '앱개발 종합반'
group by payment_method
2. select name, count(*) from users
where email like '%gmail.com'
group by name
3. select course_id, avg(likes) from checkins
order by course_id
별칭 기능: Alias
쿼리가 점점 길어지면서 종종 헷갈리는 일이 생길 수 있습니다. 그래서 SQL은 Alias라는 별칭 기능을 지원합니다.
select * from orders o -> o라는 별칭 사용
where o.course_title = '앱개발 종합반'
또는,
select payment_method, count(*) as cnt from orders o -> as를 붙여서 별칭 cnt를만
where o.course_title = '앱개발 종합반'
group by payment_method
<퀴즈> 네이버 이메일을 사용하여 앱개발 종합반을 신청한 주문의 결제수단별 주문건수 세어보기
select payment_method, count(*) from orders
where email like '%naver.com' and course_title = '앱개발 종합반'
group by payment_method
'SQL' 카테고리의 다른 글
SQL 기본 (0) 2023.05.16 SQL 4주차(2) (0) 2023.05.08 SQL 4주차(1) (0) 2023.05.08 SQL 3주차 (0) 2023.05.07 SQL 1주차 (0) 2023.05.06