[TIL] SQL - Group by, Order by

sooyoung choi·2023년 11월 10일
0

Javascript, Node.js

목록 보기
24/37
post-thumbnail

🕸️ 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;

0개의 댓글