SQL jest standardowym językiem do pracy z relacyjnymi bazami danych. Ma w swoim arsenale wiele potężnych narzędzi do manipulowania danymi przechowywanymi w postaci tabel.
Niewątpliwie jednym z takich narzędzi jest możliwość grupowania danych w swoich próbach. Instrukcja SQL HAVING, wraz z instrukcją WHERE, pozwala zdefiniować warunki dla próbki danych już pogrupowanych w określony sposób.
Parametr HAVING SQL: description
Przede wszystkim warto zauważyć, że ten parametr jest opcjonalny i dotyczy tylko połączenia z parametrem GROUP BY. Jak możesz pamiętać, GROUP BY jest używany, gdy funkcje agregujące są używane w SELECT, a wyniki ich obliczeń muszą być uzyskane przez określone grupy. Jeśli GDZIE pozwala ustawić warunki próbki przed grupowaniem danych, to HAVING zawiera warunki związane z danymi już bezpośrednio w samych grupach. Dla lepszego zrozumienia przyjrzyjmy się przykładowi ze schematem pokazanym na poniższym obrazku.
Jest to świetny przykład, który daje HAVING opis SQL. Ta tabela zawiera nazwy produktów, firm, które je produkują, oraz kilka innych dziedzin. W żądaniu w prawym górnym rogu staramy się uzyskać informacje o liczbie nazw produktów, które produkuje każda firma, w wyniku czego chcemy wydobyć tylko te firmy, które produkują więcej niż 2 przedmioty. Parametr GROUP BY utworzył trzy grupy, odpowiadające im nazwy firm, dla których zliczono liczbę produktów (linii).Ale klauzula HAVING odcięła jedną grupę wynikowej próbki, ponieważ nie spełniała warunku. W rezultacie otrzymujemy dwie grupy odpowiadające firmom z liczbą produktów 5 i 3.
Może pojawić się pytanie, dlaczego należy używać HAVING, jeśli SQL jest WHERE. Gdybyśmy użyli GDZIE, to spojrzałby na całkowitą liczbę wierszy w tabeli, a nie w grupach, a warunek nie miałby znaczenia w tym przypadku. Jednak często są one idealnie dopasowane w jednym zapytaniu.
W powyższym przykładzie widzimy, jak dane dotyczące nazw pracowników wymienionych w WHERE są początkowo gromadzone, a następnie grupowane w GROUP BY, wynikiem jest dodatkowa kontrola wysokości wynagrodzenia dla każdego pracownika.
SQL HAVING Parametr: Przykłady, składnia
Rozważmy niektóre funkcje składni SQL HAVING. Opis tego parametru jest dość prosty. Po pierwsze, jak już wspomniano, jest on używany wyłącznie w połączeniu z parametrem GROUP BY i jest wskazywany bezpośrednio po nim i przed ORDER BY, jeśli jest, w zapytaniu. Jest to zrozumiałe, ponieważ HAVING określa warunki zgrupowanych danych. Po drugie, tylko zagregowane funkcje i pola określone w klauzuli GROUP BY mogą być użyte dla tego parametru. Wszystkie warunki w tym akapicie są wskazane w dokładnie taki sam sposób jak w przypadku WHERE.
Podsumowanie
Jak widać, operator nie ma nic skomplikowanego. Semantycznie używa się go w taki sam sposób jak GDZIE. Ważne jest, aby zrozumieć, co WHERE używa dla wszystkich swoich danych, i HAVING - tylko w odniesieniu do grup zdefiniowanych w klauzuli GROUP BY. Jesteśmyprzedstawił wyczerpujący opis dla HAVING SQL, który jest wystarczający do pewnej pracy z nim.