선택장애

데이터베이스(DB) - GROUP BY와 HAVING의 문법과 주의사항(예시) 본문

데이터베이스(DB)

데이터베이스(DB) - GROUP BY와 HAVING의 문법과 주의사항(예시)

yes or yes 2017. 8. 14. 15:46
반응형
문법
주의사항






GROUP BY <속성>
GROUP BY로 투플을 그룹으로 묶은 후 SELECT 절에는 GROUP BY에서 사용한 <속성>과 집  계함수만 나올 수 있다.

§ 맞는 예
SELECT custid, SUM(saleprice)  FROM Orders
GROUP BY custid;

• 틀린 예
SELECT bookid, SUM(saleprice) /* SELECT 절에 bookid 속성이 올 수 없다 */  FROM Orders
GROUP BY custid;








HAVING <검색조건>
WHERE 절과 HAVING 절이 같이 포함된 SQL 문은 검색조건이 모호해질 수 있다. HAVING 절은 ① 반  드시 GROUP BY 절과 같이 작성해야 하고 ② WHERE 절보다 뒤에 나와야 한다. 그리고 ③ <검색조건>  에는 SUM, AVG, MAX, MIN, COUNT와 같은 집계함수가 와야 한다.

• 맞는 예
SELECT custid, COUNT(*) AS 도서수량  FROM Orders
WHERE saleprice >= 8000  GROUP BY custid
HAVING count(*) >= 2;

• 틀린 예
SELECT custid, COUNT(*) AS 도서수량  FROM Orders
HAVING count(*) >= 2 /* 순서가 틀렸다 */  WHERE saleprice >= 8000
GROUP BY custid;


반응형