2012-03-23 65 views
0

我試過以下語句的不同變體,結果是它必須做的一半,我不知道什麼是缺失。選擇大於ORACLE

SELECT DISTINCT COUNT(*) AS NO_RESERVATIONS, HG.RESV_ID, HR.BOOKING_CUS_ID AS BOOKED_BY, C.CUS_NAME 
FROM HOLIDAY_RESERVATION HR INNER JOIN(HOLIDAY_GROUP HG INNER JOIN CUSTOMER C 
ON HG.CUS_ID = C.CUS_ID) 
ON HR.BOOKING_CUS_ID = HG.CUS_ID 
WHERE HR.RESV_ID >= 2 
GROUP BY HG.RESV_ID, HR.BOOKING_CUS_ID, C.CUS_NAME; 

息率

NO_RESERVATIONS RESV_ID BOOKED_BY CUS_NAME 
--------------- ---------- ---------- -------------------- 
       1   3   5 Beatrice P. Rosa 
       1   8   15 Phillip B. Fleming 
       1   7   13 Debra V. Key 
       1   4   7 Magee A. Pace 
       2   11   3 Hadassah T. Hebert 
       1   5   9 Portia D. Melton 
       2   2   3 Hadassah T. Hebert 
       1   6   11 Larissa X. Boyer 
       1   9   17 Wayne F. Burnett 
       1   10   19 Eleanor J. Padilla 

10 rows selected. 

它應該只顯示誰取得了兩個或兩個以上的預訂的人,在這種情況下哈達薩T.赫伯特

ANSWER感謝布賴恩尋求幫助

SELECT DISTINCT C.CUS_NAME AS BOOKED_BY, COUNT(*) AS NO_RESERVATIONS 
FROM HOLIDAY_RESERVATION HR INNER JOIN(HOLIDAY_GROUP HG INNER JOIN CUSTOMER C 
ON HG.CUS_ID = C.CUS_ID) 
ON HR.BOOKING_CUS_ID = HG.CUS_ID 
GROUP BY HG.RESV_ID, HR.BOOKING_CUS_ID, C.CUS_NAME 
HAVING count(*) > 1; 

息率

BOOKED_BY   NO_RESERVATIONS 
-------------------- --------------- 
Hadassah T. Hebert     2 

回答

5

要過濾分組結果,就需要使用HAVING語句。因此,對於您的示例,您的查詢將如下所示:

SELECT DISTINCT COUNT(*) AS NO_RESERVATIONS, HG.RESV_ID, HR.BOOKING_CUS_ID AS BOOKED_BY, C.CUS_NAME 
FROM HOLIDAY_RESERVATION HR INNER JOIN(HOLIDAY_GROUP HG INNER JOIN CUSTOMER C 
ON HG.CUS_ID = C.CUS_ID) 
ON HR.BOOKING_CUS_ID = HG.CUS_ID 
WHERE HR.RESV_ID >= 2 
GROUP BY HG.RESV_ID, HR.BOOKING_CUS_ID, C.CUS_NAME 
HAVING count(*) > 1; 
+0

非常感謝,我永遠不會忘記這:) – 2012-03-23 22:33:29