Ako používať klauzulu MySQL HAVING, kde je súčet väčší ako prahová hodnota

Ako Pouzivat Klauzulu Mysql Having Kde Je Sucet Vacsi Ako Prahova Hodnota



Pri práci s databázou MySQL sa často vyskytujú prípady, keď chcete filtrovať hodnoty. Aj keď môžete použiť klauzulu WHERE, nie vždy to funguje pre všetky prípady. Klauzula HAVING sa používa, keď chcete vykonať dotaz filtra pomocou agregačnej funkcie a použiť zoskupenia.

Klauzula HAVING sa spolieha na klauzulu GROUP BY vo svojom filtri a vykoná dotaz na základe poskytnutej podmienky. Obmedzí filter na základe podmienky a vráti iba vybrané skupiny, ak spĺňajú podmienku. Máme príklady použitia klauzuly MySQL HAVING, kde súčet presahuje prah. Týmto spôsobom sa naučíte, ako ho používať na konci dnešného príspevku.







Ako používať klauzulu MySQL HAVING, kde je súčet väčší ako prahová hodnota

Klauzulu MySQL HAVING použijete s klauzulou GROUP BY. Jeho syntax je nasledovná:



SELECT výraz1, .. výraz_n, agregovaná_funkcia (výraz) FROM názov_tabulky GROUP BY výraz HAVING ;

Môžete použiť rôzne agregačné funkcie vrátane SUM(), COUNT(), MIN(), MAX() a AVG(). Všimnite si, že každý výraz, ktorý sa nepoužíva s agregovanou funkciou, musí byť uvedený v klauzule GROUP BY.



Pokiaľ ide o podmienku, použije sa na agregované výsledky, kde zadáte prah, ktorý chcete skontrolovať pomocou podmienky. Môžete napríklad použiť funkciu SUM() a overiť, či výraz spĺňa prahovú hodnotu 10. Viac o tom porozumieme v poskytnutých príkladoch.





Aby sme pochopili, ako funguje klauzula HAVING, vytvorte vzorovú databázu, s ktorou budeme pracovať. Našu databázu nazývame „register“.



Vytvorme tiež tabuľku s názvom „pracovníci“, ktorá bude obsahovať naše rôzne stĺpce a typy údajov. Tu pracujeme s údajmi pracovníkov, ako sú meno, hodiny, pracovný dátum atď.

Kontrolou popisu našej tabuľky môžeme potvrdiť, že všetky stĺpce sú úspešne vytvorené.

Hodnoty vložíme do našej tabuľky. Máme rôznych pracovníkov, ktorí pracujú v rôznych hodinách a dňoch. Pomocou týchto údajov môžeme použiť klauzulu HAVING tam, kde súčet prekročí prah.

Pre náš prvý príklad uvažujme o prípade, keď chceme nájsť pracovníkov, ktorí odpracovali najviac hodín. Pre klauzulu HAVING zahrňte súhrnnú funkciu pre hodiny. V klauzule GROUP BY zoskupujeme riadky pomocou riadku s názvom, aby sme pomohli klasifikovať pracovníkov s celkovým počtom hodín, ktorý je väčší ako prahová hodnota.

Ak máme prah pre celkový počet hodín 7, vykonáme príkaz takto:

SELECT meno, SUM(hodiny) AS celkove_hodiny_na_osobu FROM pracovníkov GROUP BY mena HAVING suma(hodiny) > 7;

Vykonaním príkazu dostaneme výstup, ktorý obsahuje dva riadky, pretože iba dvaja pracovníci prekročili prah, ktorý je uvedený v klauzule HAVING.

Predpokladajme, že chceme klasifikovať oddelenia, aby sme videli tie s pracovníkmi, ktorí pracujú v hodinách dlhších ako 7 hodín. Vyberieme oddelenie, potom použijeme agregovanú funkciu SUM s hodinami a zoskupíme riadky pomocou výrazu oddelenia.

Náš príkaz je nasledovný:

SELECT oddelenie, SUM(hodiny) AS celkove_hodiny_na_oddelenie FROM pracovníci GROUP BY oddelenie HAVING suma(hodiny) > 7;

Z výsledkov si môžeme overiť, že sa nám podarilo vyfiltrovať riadky tak, aby zostali len tie, ktorých súčet hodín je vyšší ako náš prah.

Podobne, ak chceme filtrovať pracovný dátum s najvyšším počtom pracujúcich tak, aby prekročil hranicu 10 hodín, vyberieme výraz pracovného dátumu. Potom použijeme funkciu SUM s hodinami a zoskupíme riadky podľa pracovného dátumu.

Príkaz je nasledovný:

SELECT pracovný dátum, SUM(hodiny) AKO najvyššia_odpracovaná_hodina FROM pracovníkov GROUP BY pracovný dátum HAVING suma(hodiny) > 10;

Po vykonaní príkazu výsledky ukazujú, že iba jeden pracovný dátum má súčet celkových hodín, ktoré prekračujú prah:

Záver

Klauzula MySQL HAVING sa používa, keď chcete vykonať dotaz filtra pomocou agregačnej funkcie. Je kombinovaný s klauzulou GROUP BY na vykonanie konkrétnejšieho dotazu. Tento príspevok podrobne opísal všetko o klauzule MySQL HAVING, kde je súčet väčší ako prahová hodnota. S poskytnutými príkladmi teraz rozumiete, ako pracovať s klauzulou MySQL HAVING.