결론부터 말하자면, WHERE 절에 집계함수는 사용 불가능하고, GROUP BY절이 없어도 HAVING절은 사용 가능하다.
총 학생 수가 240보다 작은 경우에만 총 학생 수를 조회하는 쿼리를 짜려고 한다. ( 학생 수 총계: 238 )
테이블명: 학생 | |
반 | 학생수 |
1 | 30 |
2 | 30 |
3 | 28 |
4 | 35 |
5 | 30 |
6 | 30 |
7 | 30 |
8 | 25 |
보통 쿼리의 조건을 WHERE절로 걸기 때문에 아래와 같이 WHERE절을 이용해 짜는 실수를 범할 수 있다.
SELECT SUM(학생수)
FROM 학생
WHERE SUM(학생수) < 240;
그러나 WHERE절에서는 집계함수를 사용할 수 없다.
이 때, HAVING 절을 이용하면 된다.
많은 사람들이 GROUP BY와 함께 사용하고 있는 HAVING절은, 사실 GROUP BY절이 없어도 단독으로 사용 가능하다.
따라서 집계함수를 사용할 수 있는 HAVING으로 바꾸어주면 아래의 쿼리와 같다.
SELECT SUM(학생수)
FROM 학생
HAVING SUM(학생수) < 240;
'Oracle' 카테고리의 다른 글
[ORACLE] NUMBER(,)타입 사이즈 줄이기 오류 ORA-01440 해결 방법 (0) | 2025.04.14 |
---|---|
[ORACLE] sys 계정으로 접속하기(터미널cmd, SQLDeveloper) (1) | 2025.01.03 |