스파르타/SQL

SQL_2주차_Group by와 Order by

옒르 2023. 1. 3. 14:31

[수업 목표]

  1. 동일한 범주의 데이터를 묶어서 통계를 내주는 Group by를 이해한다.
  2. 출력하는 데이터를 필드의 값으로 정렬하여 출력하는 Order by를 익힌다.
  3. 조금 더 복잡한 분석을 위해 자주 사용되는 유용한 문법을 익힌다.

1) 범주의 통계를 내주는 Group by

👉스파르타 회원: 성씨별로 몇 명의 회원이 있는지 알아보자

#users를 gruop by name으로 묶어줘라 -> name으로 묶인 수를 세줘라

SELECT name, count(*) from users

group by name

 

👉Group by 제대로 알아보기: SQL 쿼리가 실행되는 순서

select name, count(*) from users
group by name

 

❗️위 쿼리가 실행되는 순서: from → group by → select

 

 

2) Group by 기능 알아보기

  • 동일한 범주의 개수 구하기(사용빈도多)

👉주차별 '오늘의 다짐' 개수 구하기

SELECT week, COUNT(*) from checkins

group by week

 

✳️ where문으로 결과가 동일한지 검증

SELECT * from checkins

where week =1 / 2/ 3

 

  • 동일한 범주에서의 최솟값 구하기

👉주차별 '오늘의 다짐'  최소 개수 구하기

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

 

#반올림하여 소수점 2째자리까지 나타내기 ->  ROUND 함수 사용

SELECT week ,ROUND( avg(likes),2)FROM checkins

group by week

 

  • 동일한 범주의 합계 구하기

👉주차별 '오늘의 다짐'의 좋아요 합계 구하기

SELECT week ,sum(likes)FROM checkins

group by week 

 

3) Order by로 앞의 결과를 정렬

select name, count(*) from users

group by name

order by count(*)

 

❗️위 쿼리가 실행되는 순서: from → group by → select → order by

 

4) Where 와 Group by & Order by 함께 사용

  • 웹개발 종합반의 결제수단별 주문건수 세어보기

SELECT payment_method, COUNT(*) FROM orders

WHERE course_title = '웹개발 종합반'

group by payment_method

 

5) Group by & Order by 연습

  • Order by 연습

❗️문자열과 시간 두가지 모두를 기준으로 정렬가능

 

  • Group by 연습

✅[퀴즈] 앱개발 종합반의 결제수단별 주문건수 세어보기

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

 

#만약 내림차순으로 정렬하고 싶을시

select name,COUNT(*) FROM users

where email like '%gmail.com'

group by name

order by COUNT(*) desc

 

✅[퀴즈] course_id별 '오늘의 다짐'에 달린 평균 like 개수 구해보기

SELECT course_id ,AVG(likes) FROM checkins

group by course_id