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 |