동일한 범주를 갖는 데이터를 하나로 묶어서, 범주별 통계를 내주는 것을 의미한다.
select 범주별로 세어주고 싶은 필드명, count(*) from 테이블명
group by 범주별로 세어주고 싶은 필드명;
select name, count(*) from users
group by name;
예) 같은 성씨의 데이터를 하나로 묶고, 각 성씨의 회원수를 구할 때
쿼리 실행 순서
select name, count(*) from users
group by name;
쿼리가 실행되는 순서: from → group by → select
from users
: users 테이블 데이터 전체를 가져온다.group by name
: users 테이블 데이터에서 같은 name을 갖는 데이터를 합쳐준다.select name, count(*)
: name에 따라 합쳐진 데이터가 각각 몇 개가 합쳐진 것인지 세어준다.동일한 범주의 갯수는 count(*)
를 사용
select 범주별로 세어주고 싶은 필드명, count(*) from 테이블명
group by 범주별로 세어주고 싶은 필드명;
select week, count(*) from checkins
group by week;
동일한 범주에서 특정 필드의 최솟값은 min(필드명)
을 사용
select 범주가 담긴 필드명, min(최솟값을 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명;
select week, min(likes) from checkins
group by week;
동일한 범주에서 특정 필드의 최댓값은 max(필드명)
을 사용
select 범주가 담긴 필드명, max(최댓값을 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명;
select week, max(likes) from checkins
group by week;
동일한 범주에서 특정 필드의 평균값은 avg(필드명)
을 사용
select 범주가 담긴 필드명, avg(평균값을 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명;
select week, avg(likes) from checkins
group by week;
동일한 범주에서 특정 필드의 합계는 sum(필드명)
을 사용
select 범주가 담긴 필드명, sum(합계를 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명;
select week, sum(likes) from checkins
group by week;
웹개발 종합반의 결제수단별 주문건수 세어보기
👉OO별 (=묶어서 확인할 필드명)
웹개발 종합반의 결제수단별 주문건수 세어보기
👉통계낼 방법(합계를 알고 싶은 필드명)
ex) 결제수단별 / 주문건수(count)
payment_method / count(*)
select payment_method, count(*) from orders
group by payment_method
ex) course_id별 / 평균 like 개수 (avg)
course_id / avg(likes)
select course_id, avg(likes) from checkins
group by course_id
데이터 정렬이 필요할 때 Order by 를 사용한다.
select name, count(*) from users
group by name
order by count(*);
select name, count(*) from users
group by name
order by count(*) desc;
쿼리 실행 순서
select name, count(*) from users
group by name
order by count(*);
쿼리 실행 순서: from → group by → select → order by
from users
: users 테이블 데이터 전체를 가져온다.group by name
: users 테이블 데이터에서 같은 name 을 갖는 데이터를 합쳐준다.select name, count(*)
: name 에 따라 합쳐진 데이터가 각각 몇 개가 합쳐진 것인지 세어준다.order by count(*)
: 합쳐진 데이터의 개수에 따라 오름차순으로 정렬해준다.쿼리가 점점 길어지면서 종종 헷갈리는 일이 생길 수 있다.
그래서 Alias라는 별칭 기능을 통해 혼동을 최소화하고, 원하는 이름으로 출력할 수 있다.
select * from orders o
where o.course_title = '앱개발 종합반'
select payment_method, count(*) as cnt from orders o
where o.course_title = '앱개발 종합반'
group by payment_method
이런식으로 출력될 필드에 별칭을 붙이는 것이 가능해진다!
select payment_method, count(*) from orders
where course_title = "웹개발 종합반"
group by payment_method;
select * from users
order by email;
select * from users
order by name;
select * from users
order by created_at desc;
select name, count(*) from users
where email like '%gmail.com'
group by name;
select course_id, avg(likes) from checkins
group by course_id;
select payment_method, count(*) from orders
where email like '%naver.com'
and course_title = '앱개발 종합반'
group by payment_method