poniedziałek, 3 września 2018

SQL – klauzula Having


SQL – klauzula Having

Klauzula HAVING umożliwia określenie warunków, które filtrują wyniki grupy w wynikach. Klauzula WHERE umieszcza warunki na wybranych kolumnach, podczas gdy klauzula HAVING umieszcza warunki na grupach utworzonych przez klauzulę GROUP BY.
Składnia
Poniższy blok kodu pokazuje pozycję klauzuli HAVING w zapytaniu.
SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY
Klauzula HAVING musi być zgodna z klauzulą ​​GROUP BY w zapytaniu i musi również poprzedzać klauzulę ORDER BY, jeśli jest używana. Poniższy blok kodu pokazuje składnię instrukcji SELECT, w tym klauzulę HAVING -
SELECT kolumna1, kolumna2
FROM tabela1, tabela2
WHERE [ warunek ]
GROUP BY kolumna1, kolumna2
HAVING [ warunek ]
ORDER BY kolumna1, kolumna2

Przykład
Rozważ tabelę KLIENCI zawierającą następujące rekordy.
+----+----------+-----+-----------+----------+
 id,  nazwisko,    wiek, adres,        pensja
'1', 'Zawadzki',  '32', 'Warszawska', '2000.00'
'2', 'Kowalczyk', '25', 'Sokratesa',  '1500.00'
'3', 'Kot',       '23', 'Darwina',    '2000.00'
'4', 'Kowalska',  '25', 'Modlińska',  '6500.00'
'5', 'Sapal',     '27', 'Wspólna',    '8500.00'
'6', 'Nowak',     '22', 'Blizne',      NULL
'7', 'Makowska',  '24', 'Piaseczno',   NULL
+----+----------+-----+-----------+----------+
Poniżej znajduje się przykład, który wyświetli rekord dla podobnej liczby wiekowej, która byłaby większa lub równa 2.
SQL > SELECT ID, NAZISKO, WIEK, ADRES, PENSJA
FROM KLIENCI
GROUP BY wiek
HAVING COUNT(wiek) >= 2;
To dałoby następujący wynik -
+ ---- + -------- + ----- + --------- + --------- +
 id,  nazwisko,    wiek, adres,        pensja
'2', 'Kowalczyk', '25',  'Sokratesa', '1500.00'
+ ---- + -------- + ----- + --------- + --------- +


Brak komentarzy:

Prześlij komentarz