SQL

HAVING

Bordercolli 2023. 8. 28. 13:02
728x90

환경 구축 bestproducts 데이터베이스 생성 후, bestproducts_items.sql bestproducts_ranking.sql 으로 테이블 만들기

 

🐕 HAVING

환경설정

해당 데이터는 G마켓에 대한 각각의 카테고리 또 서브 카테고리 별로 상품들이 들어가 있는데, 가격, 순위 이런 정보들을 크롤링해서 자동으로 이를 MYSQL DB로 만든 것이다.

 

HAVING절은 GROUP BY 안에서만 쓸 수 있다. 간단하게는 GROUP BY 를 쓴 SQL구문에서 그 안에 집계함수를 기반으로 한 조건 비교를 할 때 에는 GROUP BY뒤에 HAVING 절을 써서 조건 비교를 할 수 있음.

 

SELECT provider FROM items GROUP BY provider HAVING COUNT(*) >=100;

# 진짜 잘팔리는 업체는 아마도 BEST상품의 한 100개 정도 이상의 상품이 등록되어 있을 것이다. 그러면 진짜 강자이다.

# 각각의 items에 각각의 행(상품) 중에서 100개 이상의 판매업체만 출력하라.

 

앞선 집계함수들은 단순히 집계함수를 출력하는 것이었는데, having을 사용하여 집계함수에 조건을 걸어서 원하는 산출물만 출력하도록 함.

 

이름이 100번 이상 나온 판매업자들을 조사한다라고 가정하고 조건절을 사용하기 위해서 where을 사용하면 에러가 발생한다.

즉, 이는 집계함수를 group by 와 같이 사용하지 못한다는 것을 의미한다.

집계함수에 조건을 걸고 GROUP BY 와 함께 쓰려면 HAVING절을 사용하여야 한다.

WHERE은 이런 식으로 사용이 가능하다.

순서: WHERE > GROUP BY > HAVING > ORDER BY > LIMIT 

 

정리: GROUP BY와 단순 집함수 출력은 함께 사용이 가능하지만 GROUP BY와 조건이 첨부된 집계함수를 함께 사용하면 HAVING을 사용하여야 한다. 

※ WHERE 뒤에 집계함수 사용X 

 

 

'SQL' 카테고리의 다른 글

SUBQUERY  (0) 2023.08.28
INNER JOIN, OUTER JOIN  (0) 2023.08.28
[🎉중급🎉] 외래키  (1) 2023.08.28
[실전] GROUP BY, AS, ORDER BY  (0) 2023.08.28
[실전] LIMIT, COUNT, DISTINCT, 집계함수  (0) 2023.08.25