1. Group by
Group by 는 동일한 데이터를 묶어주는 기능입니다.
select field1, count(*)
from users_table
group by field1

쿼리 실행순서
from ➤ group by ➤ select
예제
field1 별로 묶어서 각 데이터별 개수 구하기
select field1, count(*)
from table1
group by field1
field1 별로 묶인 데이터별 최소값 구하기
select field1, min(field2)
from table1
group by field1
field1 별로 묶인 데이터별 최대값 구하기
select field1, max(field2)
from table1
group by field1
field1 별로 묶인 데이터별 평균값 구하기
select field1, avg(field2)
from table1
group by field1
추가
select field1, round(avg(field2))
from table1
group by field1
select field1, round(avg(field2), 1)
from table1
group by field1
group by 로 묶을 떈 반드시 어떤 통계치를 출력할지 넣어야합니다.
select *
from orders
group by payment_method
ex)
select count(*)
from orders
group by payment_method
Order by
Order by 뒤에 정렬하고자 하는 기준 칼럼을 적으면 해당 칼럼을 기준 오름차순으로 정렬이 됩니다.
select *
from table1
order by field1
select *
from table1
order by field1 desc
where 와 함께 사용하기
select payment_method, count(*)
from orders
where course_title = "웹개발 종합반"
group by payment_method;
위 쿼리의 실행 순서: from ➤ where ➤ group by ➤ select
1. from orders: users 테이블 데이터 전체를 가져옵니다.
2. where course_title = "웹개발 종합반": 웹개발 종합반 데이터만 남겨줍니다.
3. group by payment_method: 같은 payment_method을 갖는 데이터를 합쳐줍니다.
4. select payment_method, count(*): payment_method에 따라 합쳐지 데이터가 각각 몇 개가 합쳐진 것인지 세줍니다.
여기서 order by가 추가 된다면 맨 마지막에 실행되어 정렬됩니다.
Group by, Order by 예제
1. 앱개발 종합반의 결제수단별 주문건수 세어보기

select payment_method, count(*)
from orders
where course_title = "앱개발 종합반"
group by payment_method;
2. Gmail을 사용하는 성씨별 회원수 세어보기

select name, count(*)
from users
where email like '%gmail.com'
group by name;
3. course_id별 '오늘의 다짐'에 달린 평균 like 개수 구해보기

select course_id, avg(likes)
from checkins
group by course_id;
Alias
-- 1 --
select *
from orders o
where o.course_title = '앱개발 종합반'
-- 2 --
select payment_method, count(*) as cnt
from orders o
where o.course_title = '앱개발 종합반'
group by payment_method
