MySQL

[MySQL] 데이터 그룹화하여 처리 group by, having

건휘맨 2024. 5. 14. 13:17

group by : 그룹화된 데이터를 기반으로 데이터를 집계하거나 분류하는데 사용

-- ~별로 묶어서 ... 하자 : group by 키워드
-- author_lname 별로 몇권의 책을 썼는지
-- author_lname 과 책의 권수를 보여주세요.

select author_lname, count(author_lname) as book_cnt
from books
group by author_lname;

 

-- 년도별로 각각 몇권의 책이 출간되었는지
-- 년도와 책의 수를 보여주세요.

select released_year, count(released_year)
from books
group by released_year
order by released_year asc;

 

 

group by 로 그룹화된 데이터에 대한 조건을 설정할 때는 having 사용

-- 년도별 stock_quantity 의 평균값이 70보다 큰 책들의
-- 년도와 평균값을 보여주세요.

select released_year, avg(stock_quantity) avg_stock
from books
group by released_year having avg_stock >= 70;

 

-- 출판년도가 2000년 이상인 데이터에서
-- 년도별 stock_quantity 의 평균값이 70보다 큰 책들의
-- 년도와 평균값을 보여주되 평균값이 큰 것부터 보여주세요.

select released_year, avg(stock_quantity) avg_stock
from books
where released_year >= 2000
group by released_year having avg_stock >= 70
order by avg_stock desc;