SQL je standardní jazyk pro práci s relačními databázemi. Ve svém arzenálu má mnoho silných nástrojů pro manipulaci s daty uloženými ve formě tabulek.
Nepochybně je jedním z takových nástrojů schopnost seskupovat data do jejich vzorku. Příkaz SQL HAVING spolu s příkazem WHERE umožňuje definovat podmínky pro ukázku dat, které jsou již seskupeny určitým způsobem.
Parametr HAVING SQL: popis
Za prvé stojí za zmínku, že tento parametr je nepovinný a vztahuje se pouze na parametr GROUP BY. Jak si vzpomínáte, skupina GROUP BY se používá, když se v SELECTu používají souhrnné funkce a výsledky jejich výpočtů je třeba získat podle konkrétních skupin. Pokud WHERE umožňuje nastavit podmínky vzorku před seskupením dat, potom HAVING obsahuje podmínky související s daty již přímo ve skupinách. Pro lepší pochopení se podíváme na příklad se schématem zobrazeným na následujícím obrázku.
Toto je skvělý příklad, který poskytuje popis HAVING SQL. V této tabulce jsou uvedeny názvy produktů, společnosti, které je vyrábějí, a některé další oblasti. V žádosti v pravém horním rohu se snažíme získat informace o počtu názvů produktů, které každá společnost vyrábí, a proto chceme vynést pouze ty společnosti, které vyrábějí více než 2 položky. Parametr GROUP BY vytvořil tři skupiny, odpovídající jména společností, u nichž se počítá počet produktů (řádků).Klauzule HAVING však odřízla jednu skupinu výsledného vzorku, protože tento stav nesplňovala. V důsledku toho získáme dvě skupiny, které odpovídají společnostem s počtem produktů 5 a 3.
Může existovat otázka, proč používat HAVING, pokud je SQL WHERE. Kdybychom použili WHERE, pak by se podíval na celkový počet řádků v tabulce, nikoliv ve skupinách, a podmínka by v tomto případě neměla význam. Poměrně často jsou dokonale splněny v jednom dotazu.
Ve výše uvedeném příkladu můžeme vidět, jak se údaje o jménech zaměstnanců uvedené na adrese WHERE původně shromažďují a poté seskupí do skupiny GROUP BY, výsledkem je dodatečná kontrola výše platu pro každého zaměstnance.
SQL HAVING Parametr: Příklady, Syntaxe
Uvažujme některé funkce syntaxe HAVING SQL. Popis tohoto parametru je poměrně jednoduchý. Nejprve, jak již bylo řečeno, používá se výhradně ve spojení s parametrem GROUP BY a je indikováno bezprostředně za ním a před příkazem ORDER BY, pokud existuje, v dotazu. To je pochopitelné, protože HAVING definuje podmínky pro seskupená data. Za druhé, pro tento parametr lze použít pouze souhrnné funkce a pole uvedené v klauzuli GROUP BY. Všechny podmínky v tomto odstavci jsou zobrazeny přesně stejným způsobem jako v případě WHERE.
Závěr
Jak vidíte, v tomto operátorovi není nic komplikovaného. Sémanticky se používá stejným způsobem jako WHERE. Je důležité pochopit, co WHERE používá pro všechna data a HAVING - pouze ve vztahu ke skupinám definovaným v klauzuli GROUP BY. Jsmepředstavil vyčerpávající popis pro HAVING SQL, což je dostatečné pro jistou práci s ním.