본문 바로가기

프로그래밍/MSSQL

[MSSQL] GROUP BY 없이 HAVING이 단독으로 오는 경우

반응형

 

 

 

GROUP BY 없이 단독 HAVING이 오는 경우

GROUP BY와 HAVING은 짝꿍이다?

HAVING이 주로 GROUP BY절 뒤에 오는 것은 맞지만, 그렇지 않은 경우도 반드시 존재한다.

 

테이블 전체가 한개의 그룹이 되는 경우가 그렇다.

예를 들면 아래와 같은 경우가 GROUP BY 없이 단독 HAVING이 존재하는 경우다.

 

SELECT COUNT(*)
FROM 테이블
HAVING COUNT(*) > 1

 

 

 

예제

 

다음과 같은 데이터가 있다.

아이템의 CNT값들 중 MAX 값이 100이 넘을 경우에만 CNT의 총 합을 반환하고,

아닐 경우 값이 반환하지 않도록 하고싶다.

 

쿼리문을 작성해보자

 

SELECT SUM(CNT) AS result
FROM sql_test_a;
HAVING MAX(CNT) > 100
-- 결과 : 300

 

pencil의 CNT값이 120으로 100이 넘기 때문에, 결과는 CNT들의 총합인 300을 반환하게 된다.

 

HAVING이 아닌 WHERE절을 사용할 경우 오류가 발생하게 된다.

 

-- 오류 발생 쿼리
SELECT SUM(CNT) AS result
FROM sql_test_a;
WHERE MAX(CNT) > 100

 

 

반응형