🕸️ Group by
- 원하는 유형별로 데이터를 그룹화 해주고 싶을 때 사용한다.
- 동일한 범주를 갖는 데이터를 하나로 묶어서, 범주별 통계를 내주는 것.
- ~별
🙋♀️ Group by가 실행되는 순서
from -> group by -> select
1) from orders: orders 테이블의 데이터 전체를 가져온다.
2) group by payment_method: 테이블 데이터에서 같은 payment_method를 갖는 데이터 합쳐준다.
3) select payment_method: payment_method 별로 그룹화 된 그룹들을 출력해준다.
- 결제수단별로 그룹화 해서 보여줘.
select payment_method from orders
group by payment_method;
- 동일한 범주의 개수 구하기 count(*)
select 범주별로 세어주고 싶은 필드명, count(*) from 테이블명
group by 범주별로 세어주고 싶은 필드명;
- 결제수단별 주문의 총합을 보여줘.
select payment_method, count(*) from orders
group by payment_method;
- 동일한 범주에서 최대 max(), 최소 min(), 평균 avg(), 총합 sum() 구하기
- 주차별 좋아요의 최소, 최대, 평균값과 총합을 보여줘
# 최소
select week, min(likes) from checkins
group by week
# 최대
select week,max(likes) from checkins
group by week;
# 평균
select week, avg(likes) from checkins
group by week;
# 총합
select week, sum(likes) from checkins
group by week;
🧹 Order by
- 깔끔함 정렬이 필요할 때 사용
- 내림차순, 오름차순 등
🙋♀️ Order by가 실행되는 순서
from -> group by -> select -> order by
1) from orders: orders 테이블의 데이터 전체를 가져온다.
2) group by payment_method: 테이블 데이터에서 같은 payment_method를 갖는 데이터 합쳐준다.
3) select payment_method: payment_method 별로 그룹화 된 그룹들을 출력해준다.
4) order by count(*): 합쳐진 데이터의 개수에 따라 오름차순으로 정렬해준다.
# 오름차순 정렬
select payment_method, count(*) from orders
group by payment_method
order by count(*)
- 내림차순 정렬 desc
# 내림차순 정렬
select payment_method, count(*) from orders
group by payment_method
order by count(*) desc;
🕵️ Where 절과 함께 쓰기
- '웹개발 종합반'의 '결제수단별 주문건수' 세어보기
🙋♀️ 실행되는 순서
from -> where -> group by -> select -> order by
1) from orders: orders 테이블의 데이터 전체를 가져온다.
2) where course_title='웹개발 종합반': 웹개발 종합반 데이터만 남겨준다.
3) group by payment_method: 테이블 데이터에서 같은 payment_method를 갖는 데이터 합쳐준다.
4) select payment_method, count(*): payment_method 별로 합쳐진 데이터가 각각 몇 개가 합쳐진 것인지 세어준다.
5) order by count(*): 합쳐진 데이터의 개수에 따라 오름차순으로 정렬해준다.
select payment_method, count(*) from orders
where course_title = '웹개발 종합반'
group by payment_method
order by count(*);
- '네이버 이메일 사용 유저' 중 웹개발 종합반을 신청한 주문의 결제수단별 주문 건수의 값들을 내림차순으로 보여줘.
1) from orders: orders 테이블의 데이터 전체를 가져온다.
2) where email like '%naver.com' and course_title = '웹개발 종합반'
: email에 'naver.com' 포함되는 데이터들 중 '웹개발 종합반' 데이터만 남겨준다.
3) group by payment_method: 테이블 데이터에서 같은 payment_method를 갖는 데이터 합쳐준다.
4) select payment_method, count(*): payment_method 별로 합쳐진 데이터가 각각 몇 개가 합쳐진 것인지 세어준다.
5) order by count(*) desc: 합쳐진 데이터의 개수에 따라 내림차순으로 정렬해준다.
select payment_method, count(*) from orders
where email like '%naver.com' and course_title = '웹개발 종합반'
group by payment_method
order by count(*) desc;