✏️ SQLD

[SQLD] HAVING절

haeriyouu 2025. 3. 1. 17:28

📌 HAVING

/* HAVING 절 
 * GROUP BY 되거나 집계된 데이터를 필터링
 */
SELECT GROUP_NAME,
	ROUND(AVG(HEIGHT),2),
	MAX(HEIGHT),
	MIN(HEIGHT),
	AVG(FOOT_SIZE)
FROM artist
GROUP BY GROUP_NAME
HAVING AVG(FOOT_SIZE)>240;

-- SELECT에 선택하지 않아도 필터링을 할 수 있다.
SELECT GROUP_NAME,
	ROUND(AVG(HEIGHT),2),
	MAX(HEIGHT),
	MIN(HEIGHT)
FROM artist
GROUP BY GROUP_NAME
HAVING AVG(FOOT_SIZE)>240;

 

💡 HAVING은 GROUP BY 없이 단독으로 사용 가능!

SELECT MAX(HEIGHT),
	MIN(HEIGHT)
FROM artist
HAVING COUNT(*)>0;

 

💡 HAVING COUNT(*)>0의 의미

🧐 문득 여기서 HAVING COUNT(*)>0이 뭔지 궁금했다.

🔎 HAVING COUNT(*)>0은 무엇을 검증하는지

- COUNT(*)는 테이블에서 전체 행의 개수를 세는 함수.

- HAVING절은 GROUP BY없이도 사용 가능하며, 집계된 결과에 대한 조건을 필터링할 수 있음.

- COUNT(*)>0은 "테이블에 적어도 한개의 행이 있는지"를 확인하는 역할!

➡️ 즉, 테이블이 비어 있지 않을 경우에만 결과를 반환한다는 의미!