SQL je standardní jazyk pro práci s relačními databázemi. Ve svém arzenálu má mnoho výkonných nástrojů pro manipulaci s daty uloženými ve formě tabulek.
Nepochybně možnost seskupit data sjejich vzorkování určitým prvkem je jeden takový nástroj. Příkaz SQL HAVING spolu s klauzule WHERE umožňuje definovat podmínky pro vzorkování dat již seskupených nějakým způsobem.
Především je třeba poznamenat, že tento parametrje volitelná a používá se výhradně ve spojení s parametrem GROUP BY. Jak si vzpomínáte, skupina GROUP BY se používá, když SELECT používá agregační funkce a výsledky jejich výpočtů musí být získány určitými skupinami. Pokud položka WHERE umožňuje nastavit podmínky pro výběr před seskupením dat, obsahuje HAVING podmínky vztahující se k datům již v samotných skupinách. Pro lepší pochopení se podívejme na příklad s diagramem na obrázku níže.
To je skvělý příklad, který poskytuje popis HAVING SQL. Je uvedena tabulka se seznamem názvů produktů, společností, které je vyrábějí, a některé další oblasti. Dotaz v pravém horním rohu, se snažíme získat informace o tom, kolik druhů výrobků každá firma vyrábí, s tím, že chceme-li zobrazit pouze ty firmy, které produkují více než 2 položky. GROUP BY volba je tvořen ze tří skupin, které odpovídají jmen společností, z nichž každá má počítal počet výrobků (řádky). Ale nastavení byste museli stav přihrádky jedna skupina z výsledného vzorku, protože nesplňuje podmínku. Výsledkem toho jsou dvě skupiny, které odpovídají společnostem s počtem výrobků 5 a 3.
Může vzniknout otázka, proč používatHAVING, pokud je v SQL SQL WHERE. Pokud bychom použili WHERE, podívali by se na celkový počet řádků v tabulce, nikoliv ve skupinách, a podmínka by v tomto případě neměla smysl. Velmi často však dokonce koexistují v jedné žádosti.
Ve výše uvedeném příkladu můžeme vidět, jak nejprveje výběr údajů o za zaměstnance uvedené v parametr, pomocí něhož, a pak rozděleny do GROUP BY výsledek je navíc testována součet platu za každého zaměstnance.
Zvažme některé funkce syntaxeHAVING 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 zadáno bezprostředně za ním a před příkazem ORDER BY, pokud je v dotazu jedna. Je pochopitelné, protože HAVING definuje podmínky pro již seskupená data. Zadruhé, ve stavu tohoto parametru můžete použít pouze agregované funkce a pole uvedené v parametru GROUP BY. Všechny podmínky v tomto parametru jsou přesně zadány stejným způsobem jako v případě WHERE.
Jak můžete vidět, v tomto operátorovi není nic komplikovanéhone. Sémanticky se používá stejným způsobem jako WHERE. Je důležité pochopit, že WHERE se používá ve vztahu ke všem volitelným datům a HAVING je relativní pouze vůči skupinám definovaným v parametru GROUP BY. Představili jsme komplexní popis HAVING SQL, který stačí k tomu, aby s ním mohl pracovat s jistotou.
</ p>