SQL_2주차_Group by와 Order by
[수업 목표]
- 동일한 범주의 데이터를 묶어서 통계를 내주는 Group by를 이해한다.
- 출력하는 데이터를 필드의 값으로 정렬하여 출력하는 Order by를 익힌다.
- 조금 더 복잡한 분석을 위해 자주 사용되는 유용한 문법을 익힌다.
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