Group by와 Order by

소라·2023년 8월 9일
0

SQLD고군분투기

목록 보기
2/4

Group by

동일한 범주의 데이터를 묶어서 통계를 내주는 것이다.
group by를 이용하면 1) 같은 성씨의 데이터를 하나로 묶고 2) 각 성씨의 회원수를 구할 수 있다.

  • 성씨별로 몇명의 회원이 있는지 알아보자
select name, count (*) from users
group by name
  1. from users: users 테이블에서 데이터를 불러온다.
  2. group by name: name이라는 필드에서 동일한 값을 갖는 데이터를 합쳐준다.
  3. select name, count():이름과 count() 를 출력해주는데, 여기서 count(*)는 group by로 합쳐진 데이터의 개수를 세어주는 것이다.

Group by 사용해보기

  • 주차별 '오늘의 다짐'개수 구하기**
select week, count(*) from checkins
group by week
select 범주별로 세어주고 싶은 필드명, count(*) from 테이블명
group by 범주별로 세어주고 싶은 필드명
  • 주차별'오늘의 다짐' 의 좋아요 최솟값 구하기**
select week, min(likes) from checkins
grou by week
  • 주차별 '오늘의 다짐'의 좋아요 최댓값 구하기**
select week, max(likes) from checkins
group by week
  • 주차별 '오늘의 다짐'의 좋아요 평균값 구하기**
select week, avg(likes) from checkins
group by week

Order by 사용해보기

Order by를 사용하면 한번에 정렬 할 수 있다.

  • 결과의 개수 오름차순으로 정렬해보기
selet name, coint(*) from users
group by name
order by count(*)
  • 결과의 개수 내림차순으로 정렬해보기
select name, count(*) from users
grop by name
order by count(*) desc

퀴즈

  • 앱개발 종합반의 결제수단별 주문건수 세어보기
select payment_method, count(*) from orders
where course_title ='앱개발 종합반'
group by payment_method
  • gmail을 사용하는 성씨별 회원수 세어보기
select name, count(*) from users
where email like = '%gmail.com'
group by name
  • course_id별 오늘의 다짐에 달린 평균 like 개수 구해보기
select course_id, count(likes) from checkins
group by course_id

정답 ->

select course_id, avg(likes) from checkins
group by course_id

이외 유용한 문법 배우기

별칭기능: Alias

select * from orders o
where o.course_title='앱개발 종합반'
  • as를 붙여서 별칭추가
select payment_method, count(*) as cnt from orders o
where o.course_title = '앱개발 종합반'
group by payment_method

count(*)를 cnt로 출력

1개의 댓글

comment-user-thumbnail
2023년 8월 9일

이렇게 유용한 정보를 공유해주셔서 감사합니다.

답글 달기