개발/SQL
MySQL - 그룹의 조건 having
웅'jk
2022. 12. 7. 17:58
having 은 group by 와 한 셋트로 사용되며
그룹한 데이터들의 조건을 의미한다.
예시 ) books 에서 년도별로 stock_quantity 의 평균이 70보다 큰 데이터의 released_year와 평균 stock_quantity 값을 보여주세요.
select released_year,avg(stock_quantity) as average
from books
group by released_year
having average >= 70;
먼저 정답은 위와 같으나 정답에 접근하는 방법을 알아보자.
# 1. 년도별로 해결하기.
select *
from books
group by released_year
년도를 해당하는 컬럼은 released_year 이기 때문에 먼저 그룹으로 묶는다. (왜 묶냐면 중복값이 있기 때문이다.)
# 2 . group by 로 묶인 데이터의 평균값이 70 큰 데이터 해결하기
select *
group by released_year
having avg(stock_quantity)>= 70
having 은 그룹의 컬럼 을 써야하기 때문에 함수가 오는 것도 가능합니다.
where 조건과의 차이는 where 는 함수를 사용할 수 없고 일반 조건만 가능하지만
having은 그룹 컬럼의 관한 함수를 이용할 수있으나 다른 일반조건은 불가능합니다.
3. released_year 와 평균값 보여주기
select released_year,avg(stock_quantity) as average
from books
group by released_year
having avg(stock_quantity) >= 70;