Kay21 2022. 4. 19. 17:22

[2주차 강의] 

 

1. 동일한 범주의 데이터를 묶어주는 Group by (묶어준다)

성씨별로 각 몇명인지 보여줘

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

 

네이버를 쓰는 사람들 중에서 성씨별로 몇명씩 있는지 보고 싶다?

 

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 

 

좋아요의 평균값 avg

select week, avg(likes) from checkins

group by week 

 

소숫점 2째자리까지 반올림

select week, round(avg(likes), 2) from checkins

group by week

 

동일한 범주의 합계 구하기 좋아요의 합  sum

select week, sum(likes) from checkins

group by week

 

2. 깔끔하게 데이터를 정리해보자 order by

-> 내림차순, 올림차순 

 

select name, count(*) from users

group by name

 

-> 그 다음에 정렬! (마지막에)

from -> group by -> select -> order by

 

select name, count(*) from users

group by name

order by count(*) -> 아무것도 안붙이면 오름차순 

 

order by count(*) desc-> 아무것도 안붙이면 내림차순

 

(꼭 그룹by랑 같이 써야 하는 것은 아님) 라이크 많은 것부터 쭉 정렬~~

select * from checkins

order by likes desc

 

3. where와 함께 사용해보기

 

select payment_method, count(*) from orders

group by payment_method

 

웹개발 종합반의 결제 카테고리별 갯수 -> 내림차수 정렬

select payment_method, count(*) from orders

where course_title = '웹개발 종합반'

group by payment_method

order by count(*) desc

 

4. Order by, Group by 연습

 

order by를 문자에도 쓸 수 있음.

select * from users

order by email

 

select * from users

order by name 

 

시간에도 쓸 수 있음

select * from users

order by created_at desc

 

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

select payment_method, count(*) from orders

where course_title = '앱개발 종합반' --> 문제를 자세히 안 읽고 안씀 ㅠㅠ

group by payment_method

 

쥐메일을 사용하는 성씨별 회원수 세어보기

select name, count(*) from users

where email like '%gmail.com'

group by name

 

course_id별 오늘의 다짐에 달린 평균 like 갯수 구해보기

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

 

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

 

[꿀팁] 

  1. show tables 로 어떤 테이블이 있는지 살펴보기
  2. 제일 원하는 정보가 있을 것 같은 테이블에 select * from 테이블명 limit 10 쿼리 날려보기
  3. 원하는 정보가 없으면 다른 테이블에도 2번해보기
  4. 테이블을 찾았다! 범주를 나눠서 보고 싶은 필드 찾기
  5. 범주별로 통계를 보고 싶은 통계 찾기
  6. 쿼리 작성!

 

5. 별칭 기능 Alias

 

select * from orders

where course_title = '앱개발 종합반'

 

어느 테이블에 있는 것인지 헷갈릴 수 있으니까

order 테이블을 o 로 별칭을 주고

where o.course_title = 라고 쓰면 그 오더 테이블에 있는 코스타이틀이라는 더 정확한 지시를 내리게 됨

 

select payment_method, count(*) from orders o
where o.course_title = '앱개발 종합반'
group by payment_method

 

결과값에서 count(*)을 cnt 라고 보이게 하고 싶으면 아래 같이 수정

 

select payment_method, count(*) as cnt from orders o
where o.course_title = '앱개발 종합반'
group by payment_method

 


숙제하기

네이버 이메일을 사용하여 앱개발 종합반을 신청한 주문의 결제수단별 주문건수 세어보기

select payment_method, count(*) from orders

where email like '%naver.com'

group by payment_method