02. 범주의 통계를 내주는 Group by
2) 스파르타 회원: 성씨별로 몇 명의 회원이 있는지 알아보자
select name, count(*) from users
group by name
03. SQL 쿼리가 실행되는 순서
3) Group by 제대로 알아보기: SQL 쿼리가 실행되는 순서
1.users에서 테이블 불러준다.
2.먼저 이름으로 그룹지어준다.
3. 그룹지어진것들의 수를 센다.
퀴즈) 성씨별로 그룹 지었을 때 이메일을 naver. com을 쓰는 사람의 숫자를 세어줘라
select name, count(*) from users
where email like '%naver.com'
group by name
04. Group by 기능 알아보기
동일한 범주의 개수 구하기
주차별 '오늘의 다짐' 개수 구하기
select week, count(* ) from checkins
group by week
동일한 범주에서의 최솟값 구하기
주차별 '오늘의 다짐'의 좋아요 최솟값 구하기
select week, min(likes) from checkins
group by week
동일한 범주에서의 최댓값 구하기
주차별 '오늘의 다짐'의 좋아요 최댓값 구하기
select week, max(likes) from checkins
group by week
동일한 범주의 평균 구하기
주차별 '오늘의 다짐'의 좋아요 평균값 구하기 (소숫점 2자리 까지)
select week, round(avg(likes),2) from checkins
group by week
동일한 범주의 합계 구하기
주차별 '오늘의 다짐'의 좋아요 합계 구하기
select week, sum(likes) from checkins
group by week
05. 깔끔한 정렬이 필요할 땐? Order by
원본
select name, count(*) from users
group by name
내림차순
select name, count(*) from users
group by name
order by count(*) desc
쿼리 실행순서
1. users에서 from해서 테이블 가져온다.
2. group by name 해준다.
3. name과 count(*)를 select 해준다.
4. count(*)를 내림차순으로 order by 해준다.
오름차순
select name, count(*) from users
group by name
order by count(*)
꼭 group by랑 같이 쓰는거 아니다
select * from checkins
order by likes
06. Where와 함께 사용해보기
8) Where와 Group by, Order by 함께 사용해보기
웹개발 종합반의 결제수단별 주문건수 세어보기
select payment_method, count(*) from orders
where course_title = '웹개발 종합반'
group by payment_method
order by count(*) desc
쿼리순서
1. from : orders 테이블 가져온다.
2. where: 웹개발 종합반인 것만 가져온다.
3. group by: payment_method로 묶어준다.
3. select:위에 조건에 맞는 payment method와 count(*) 가져온다.
4. order by desc: 내림차순으로 count(*)를 정렬해준다.
07. 같이 삽질해보기
자주 나는 에러
group by에서 자주 하는 실수는 묶어주고 나서, 그것을 적합하게 불러올 수 있게 select를 안해주면
원하는 데이터 모양이 안 나올 수 있다.
08. Order by, Group by 같이 연습해보기
11) Order by 연습하기
문자열을 기준으로 정렬해보기
select * from users
order by email
시간을 기준으로 정렬해보기
select * from users
order by created_at desc
12) Group by 연습하기
[퀴즈] 앱개발 종합반의 결제수단별 주문건수 세어보기
select course_title, 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, round(avg(likes),1) from checkins
group by course_id
13) [꿀팁] 이렇게 쿼리를 작성하면 편해요!
1) show tables로 어떤 테이블이 있는지 살펴보기
2) 제일 원하는 정보가 있을 것 같은 테이블에 select * from 테이블명 limit 10 쿼리 날려보기
3) 원하는 정보가 없으면 다른 테이블에도 2)를 해보기
4) 테이블을 찾았다! 범주를 나눠서 보고싶은 필드를 찾기
5) 범주별로 통계를 보고싶은 필드를 찾기
6) SQL 쿼리 작성하기!
09. 이외 유용한 문법 배워보기
14) 별칭 기능: Alias
테이블에 별칭을 줘서 필드를 구체적으로 지칭할 수 있다.
select * from orders o
where o.course_title = '앱개발 종합반'
count(*) 같이 긴 이름에 as ~ 하고 별칭을 줄 수 있다.
select payment_method, count(*) as cnt from orders o
where o.course_title = '앱개발 종합반'
group by payment_method
10. 끝 & 숙제 설명
숙제: 네이버 이메일을 사용하여 앱개발 종합반을 신청한 주문의 결제수단별 주문건수 세어보기
select course_title, payment_method, count(*) as cnt from orders o
where email like '%naver.com'
and course_title = '앱개발 종합반'
group by payment_method
'개발자 되는 중 > 개발 공부' 카테고리의 다른 글
스파르타 코딩 SQL 개발일지 4주차 (복습) (0) | 2022.10.21 |
---|---|
스파르타 코딩 SQL 개발일지 3주차 (복습) (0) | 2022.10.20 |
스파르타 코딩 SQL 개발일지 1주차 (복습) (0) | 2022.10.20 |
스파르타 코딩 웹 개발 개발일지 5주차 (복습) (0) | 2022.10.17 |
스파르타 코딩 웹 개발 개발일지 4주차 (복습) (0) | 2022.10.13 |