Oracle 11g: The difference between WHERE and HAVING
SQL> select * from sys.SHIP_CABINS ;
SHIP_CABIN_ID SHIP_ID ROOM_ ROOM_STYLE ROOM_TYPE WINDOW GUESTS SQ_FT BALCONY_SQ_FT
------------- ---------- ----- ---------- -------------------- ---------- ---------- ---------- -------------
1 102 Suite Standard Ocean 4 533
2 103 Stateroom Standard Ocean 2 160
3 104 Suite Standard None 4 533
4 105 Stateroom Standard Ocean 3 205
5 106 Suite Standard None 6 586
6 107 Suite Royal Ocean 5 1524
7 108 Stateroom Large None 2 211
8 109 Stateroom Standard None 2 180
9 110 Stateroom Large None 2 225
10 702 Suite Presidential None 5 1142
11 703 Suite Royal Ocean 5 1745
12 704 Suite Skyloft Ocean 8 722
Group by without WHERE and HAVING
SQL> select room_style, room_type, sum(GUESTS) "GUEST SUM" from sys.ship_cabins group by room_style, room_type ;
ROOM_STYLE ROOM_TYPE GUEST SUM
---------- -------------------- ----------
Stateroom Standard 7
Suite Standard 14
Stateroom Large 4
Suite Skyloft 8
Suite Royal 10
Suite Presidential 5
HAVING
SQL> select room_style, room_type, sum(GUESTS) "GUEST SUM" from sys.ship_cabins group by room_style, room_type having room_type<>'Royal' ;ROOM_STYLE ROOM_TYPE GUEST SUM
---------- -------------------- ----------
Stateroom Standard 7
Suite Standard 14
Stateroom Large 4
Suite Skyloft 8
Suite Presidential 5
WHERE
SQL> select room_style, room_type, sum(GUESTS) "GUEST SUM" from sys.ship_cabins where room_type<>'Royal' group by room_style, room_type ;
ROOM_STYLE ROOM_TYPE GUEST SUM
---------- -------------------- ----------
Stateroom Standard 7
Suite Standard 14
Stateroom Large 4
Suite Skyloft 8
Suite Presidential 5
Summary:
There is no difference between them when there is no aggregate function in HAVING clause.
However, we do this in HAVING.
SQL> select room_style, room_type, sum(GUESTS) "GUEST SUM" from sys.ship_cabins group by room_style, room_type having sum(GUESTS)>8 ;
ROOM_STYLE ROOM_TYPE GUEST SUM
---------- -------------------- ----------
Suite Standard 14
Suite Royal 10
There is no way to filter out sum(GUESTS)>8 entries using WHERE, because it doesn't allow to use Aggregate function in WHERE clause.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
자바 작업 은 Clob 또는 NClob 데이터 형식의 저장 프로 세 스 인 스 턴 스 를 포함 합 니 다.텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.