[스파르타 코딩 클럽] SQL 2주차 개발일지

2021. 6. 28. 11:28·스파르타 코딩클럽/SQL

1. Group by

Group by 란 동일한 범주를 갖는 데이터를 하나로 묶어서, 범주별 통계를 내주는 것을 의미한다.

예를 들어 Group by 를 이용하면 1) 같은 성씨의 데이터를 하나로 묶고 2) 각 성씨의 회원수를 구할 수 있다.

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

입력 시,

 

이와 같이 성씨별로 회원이 몇 명인지, 세어진 것을 확인할 수 있다.

 

2. Order by

만약 위의 데이터를 좀 더 깔끔하게 정렬하고 싶을 경우 Order by 를 사용하면 된다.

 

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

입력 시,

데이터가 오름차순으로 정렬된다는 걸 알 수 있다.

 

만약 내림차순으로 정렬하고 싶을 경우, DESC 를 사용하면 된다.

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

입력 시,

데이터가 내림차순으로 정렬된 것을 볼 수 있다.

 

3. SQL 쿼리가 실행되는 순서

 

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

위 쿼리가 실행되는 순서 : from -> group by -> select

 

1. from users : users 테이블 데이터 전체를 가져온다.

2. group by name : users 테이블 데이터에서 같은 name을 갖는 데이터를 합쳐준다.

3. select name, count(*) : name에 따라 합쳐진 데이터가 각각 몇 개가 합쳐진 것인지 세어준다.

 

쉽게 보면,

select 범주별로 세어주고 싶은 필드명, count(*) from 테이블명
group by 범주별로 세어주고 싶은 필드명

라고 생각하면 된다.

 

4. Where와 함께 사용해보기

원리는 간단하다. Where절로 조건이 하나 추가되고, 그 이후에 Group by, Order by 가 실행되는 것이다.

 

만약 웹개발 종합반의 결제수단별 주문건수를 세어보고 싶을 경우,

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

쿼리 진행 순서 : from -> where -> group by -> select 

입력 시,

와 같이 출력된다.

 

5. Order by, Group by 연습하기

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

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

 

[퀴즈] Gmail 을 사용하는 성씨별 회원수 세어보기

select name,count(*) from users u 
where email like '%gmail.com'
group by name 

 

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

select course_id , AVG(likes) from checkins c 
group by course_id

6. 과제

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

select payment_method , count(*) from orders o 
where email like '%naver.com' and course_title = '앱개발 종합반'
group by payment_method 

 

이상 끝 ٩( ᐛ )و

'스파르타 코딩클럽 > SQL' 카테고리의 다른 글

[스파르타 코딩 클럽] SQL 4주차 개발일지  (0) 2021.07.19
[스파르타 코딩 클럽] SQL 3주차 개발일지  (0) 2021.07.05
[스파르타 코딩 클럽] SQL 1주차 개발일지  (0) 2021.06.21
'스파르타 코딩클럽/SQL' 카테고리의 다른 글
  • [스파르타 코딩 클럽] SQL 4주차 개발일지
  • [스파르타 코딩 클럽] SQL 3주차 개발일지
  • [스파르타 코딩 클럽] SQL 1주차 개발일지
오도형석
오도형석
  • 오도형석
    형석이의 성장일기
    오도형석
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • MSA 모니터링 서비스
        • DB
      • 스파르타 코딩클럽
        • SQL
        • Spring
      • 백엔드
        • Internet
        • Java
        • DB
      • 캡스톤
        • Django
        • 자연어처리
      • Spring
        • JPA
        • MSA
      • ETC
        • ERROR
      • 개발 일기 N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 인기 글

  • 태그

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
오도형석
[스파르타 코딩 클럽] SQL 2주차 개발일지
상단으로

티스토리툴바