Выберите больше, чем ORACLE - PullRequest
0 голосов
/ 24 марта 2012

Я пробовал разные варианты следующего утверждения, результат - половина того, что он должен сделать, я не знаю, чего не хватает.

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.

Это должно показать только лицо, сделавшее два или более резервирований, в данном случае Хадасса Т. Хеберт

ОТВЕТ Спасибо Брайанза помощь

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

1 Ответ

5 голосов
/ 24 марта 2012

Чтобы отфильтровать сгруппированные результаты, вам нужно использовать оператор 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...