HAVING záradék az SQL Aggregate Functions-ban

Ebben az oktatóanyagban meg fogunk beszélni néhány módról, amelyekkel használhatjuk vagy hajthatjuk végre a HAVING záradékot SQL összesítő függvényekben . Ennek a záradéknak az SQL összesítő függvényekben való használata nagyban segíthet az adatok összegzésében.

A HAVING záradék majdnem hasonló a WHERE utasításhoz, és azzal együtt is végrehajtható.

Ezek összefüggéseit és különbségeit példák bemutatásával fogjuk megvitatni az oktatóanyagban.

Tartalomjegyzék

CSOPORTOSÍTÁS SZERINT ÉS HOL Kijelentések SQL-ben

Első példánkban az alábbi mintatáblázat végrehajtását és használatát tárgyaljuk . Kérjük, vegye figyelembe, hogy a WHERE záradékot csak meglévő oszlopokkal használhatjuk , csak összesített függvényekben nem.

HAVING záradék az SQL Aggregate Functions-ban

Tegyük fel, hogy egy termék összes értékesítését a SaleAmount oszlop alapján szeretnénk megkapni, ahol az érték nagyobb, mint 2 . Az eredmény eléréséhez a parancsunknak a következőnek kell lennie:

HAVING záradék az SQL Aggregate Functions-ban

Először kiválasztjuk a ProductName-t , és összesítjük a SaleAmount-ot , hogy megkapjuk a TotalSales-t. 

HAVING záradék az SQL Aggregate Functions-ban

Ezután itt a WHERE utasítást használtuk, mivel csak azokat a termékeket próbáljuk megszerezni, amelyeknél a SaleAmount nagyobb, mint 2. A 'GROUP BY ProductName' parancs azt jelzi, hogy a ProductName oszlop alatti sorokat egybe fogja csoportosítani .

A parancskészletünk végrehajtásával látni fogjuk, hogy a ProductName és SaleAmount oszlopok összes adata közül csak a Bulb és a Ventilátor jelent meg . Ez azért van így, mert ők voltak az egyetlenek, akiknek a SaleAmount értéke nagyobb, mint 2.

HAVING záradék az SQL Aggregate Functions-ban

Ebben a példában a WHERE utasítás az eredmények szűrésére szolgál egy meglévő oszloppal, amely a SaleAmount . Vegye figyelembe azt is, hogy a WHERE utasítás a GROUP BY előtt jelenik meg , és nem használható az összesített függvények szűrésére. Másrészt a HAVING záradék a GROUP BY után jelenik meg , és az összesítő függvényen alapuló szűrésre szolgál. 

GROUP BY és HAVING záradék az SQL-ben

Ebben a példában bemutatjuk a különbséget a WHERE utasítás és a HAVING záradék között. Ugyanazt a célt fogjuk használni, mint az előző példában, hogy összehasonlíthassuk és értékelhessük az eredményeket. 

Először jelenítsük meg a termékeket a teljes eladásukkal együtt az alábbi paranccsal. Amint láthatja, az első parancsunk továbbra is ugyanaz, mint a WHERE utasítást végrehajtó első parancsunk.

HAVING záradék az SQL Aggregate Functions-ban

Ha az első két parancsot akarjuk végrehajtani, a következő eredményt kapjuk:

HAVING záradék az SQL Aggregate Functions-ban

Tegyük fel, hogy csak azokat a termékeket szeretnénk megjeleníteni, amelyek összértékesítése meghaladja az 5-öt. A WHERE  utasítást nem használhatjuk, mivel csak meglévő oszlopokkal használható. Ezért használnunk kell a HAVING záradékot, mivel aggregált függvényből fogunk szűrni. 

HAVING záradék az SQL Aggregate Functions-ban

Figyelje meg, hogyan használjuk a HAVING záradékot a GROUP BY után , ellentétben a GROUP BY előtt használt WHERE utasítással. Ennek az az oka, hogy az SQL csoportosítja a rekordokat, mielőtt kiértékelné a HAVING záradékot. 

Ezután hajtsuk végre ezeket a parancsokat a HAVING SUM(SaleAmount)>5 paraméterrel . Miután megadtuk, hogy csak azokat a termékeket szeretnénk beszerezni, amelyek összára meghaladja az 5-öt, észrevesszük, hogy a jelenlegi eredménytáblázatunkban már nem fogjuk látni a tollat . Ez azért van, mert a teljes összege kevesebb, mint 5

HAVING záradék az SQL Aggregate Functions-ban

Röviden, ha adatokat szeretnénk szűrni a táblázatunkból egy meglévő oszlop alapján, akkor a WHERE záradékot használjuk , míg ha egy összesítő függvényből szeretnénk adatokat szűrni, akkor a HAVING záradékot használjuk . 

HAVING and WHERE záradék az SQL Server Management Studio-ban (SSMS)

Most továbblépünk azzal, hogy megvitatjuk és bemutatjuk, hogyan hajthatjuk végre a HAVING záradékot az (SSMS)-ben. Példák bemutatásával foglalkozunk a HAVING és a WHERE záradék közötti különbséggel is.

Az alábbiakban a SalesOrderHeader mintaadataink láthatók . Ez az adat 100 sorból áll . Példánkban a TotalSale-t szeretnénk megkapni Ügyfélazonosítóval , ahol a TotalSale nagyobb, mint 10000 . Vegye figyelembe, hogy a teljes értékesítés a TotalDue oszlop értékeinek összegén alapul .

HAVING záradék az SQL Aggregate Functions-ban

Először is hadd mutassam be, miért nem használhatjuk a WHERE záradékot , amikor a fenti példánk alapján egy összesített függvényre akarunk szűrni. 

Az alábbi képen látható mintaparancskészletet fogjuk használni. Amint látja, technikailag ugyanaz a parancskészletünk, mint az első példánkból.

Ha azonban a bal felső sarokban lévő Execute gombra kattintunk , az hibát fog eredményezni, mert nem tudjuk egyedül használni a WHERE záradékot, amikor az összesítő függvényen szűrünk.

HAVING záradék az SQL Aggregate Functions-ban

A hiba kijavításához az eredményt a HAVING záradékkal kell szűrnünk a WHERE záradék helyett . Az új parancskészletünknek hasonlónak kell lennie az alábbi képhez.

HAVING záradék az SQL Aggregate Functions-ban

Most láthatjuk, hogy a hibánkat kijavították, és az eredményeket tartalmazza10000- nél nagyobb TotalSale- vel .

A WHERE záradékot mindig a GROUP BY záradék előtt , míg a HAVING záradékot mindig a GROUP BY záradék után használjuk .

A HAVING és a WHERE záradék használata SQL-ben  

Ebben a példában tegyük fel, hogy egyszerre szeretnénk használni a WHERE és a HAVING záradékot . Próbáljuk meg lekérni a TotalSale-t Ügyfélazonosítóval , ahol a TotalSale nagyobb, mint 10000 , de csak azokkal az ügyfelekkel, akiknek területazonosítójuk 1

Mivel olyan ügyfelekre szeretnénk szűrni az eredményeket, akiknek Területazonosítójuk 1 , a WHERE záradékot fogjuk használni . Tehát a parancsunknak meg kell egyeznie az előzővel. Ismét hozzáadtunk egy WHERE záradékot a GROUP BY záradék elé .

HAVING záradék az SQL Aggregate Functions-ban

Egyelőre nem látunk nagy különbséget az előző és az új eredmény között. Ha azonban alaposan megnézi a jobb alsó sarkot, most már csak 64 sorunk van , szemben az előző 505 soros adatsorral. Ennek az az oka, hogy az eredményeket a rendszer a területazonosítójuk alapján is szűri .

Következtetés

Összefoglalva, a WHERE záradékot csak meglévő oszlopoknál használhatjuk . Ha összesített függvényekkel kell szűrnünk, akkor helyette a HAVING záradékot kell használnunk.

A HAVING záradék használata az SQL összesítő függvényeiben, valamint a HAVING és a WHERE záradék együttes végrehajtásának gyakorlása kényelmesebbé teheti a felhasználókat, amikor nagyszámú adattal vagy rekorddal dolgoznak. 

Remélem, elegendő információt és megértést adtam a HAVING záradék használatához az SQL összesítő függvényeiben. Ha többet szeretne megtudni erről a témáról és más kapcsolódó tartalomról, tekintse meg a vonatkozó linkek alábbi listáját.

Minden jót,

Hafiz


A DAX Studio és a Tabular Editor telepítése a LuckyTemplates alkalmazásban

A DAX Studio és a Tabular Editor telepítése a LuckyTemplates alkalmazásban

Ismerje meg, hogyan töltheti le és telepítheti a DAX Studio és a Tabular Editor 3 alkalmazást, és hogyan konfigurálhatja őket a LuckyTemplates és az Excel programban való használatra.

LuckyTemplates alakzattérkép-vizualizáció a térbeli elemzéshez

LuckyTemplates alakzattérkép-vizualizáció a térbeli elemzéshez

Ez a blog tartalmazza a Shape Map vizualizációt a LuckyTemplates térbeli elemzéséhez. Megmutatom, hogyan használhatja hatékonyan ezt a vizualizációt annak funkcióival és elemeivel.

LuckyTemplates pénzügyi jelentések: az eredmények hozzárendelése a sablonokhoz minden egyes sorban

LuckyTemplates pénzügyi jelentések: az eredmények hozzárendelése a sablonokhoz minden egyes sorban

Ebben az oktatóanyagban egy egyedülálló ötletet mutatok be a pénzügyi jelentésekkel kapcsolatban, amely az eredmények hozzárendelését jelenti a LuckyTemplates-en belüli táblázatsablonok előre meghatározásához.

DAX-mértékek a LuckyTemplates-ben mértékelágazás használatával

DAX-mértékek a LuckyTemplates-ben mértékelágazás használatával

Hozzon létre DAX-mértékeket a LuckyTemplates alkalmazásban meglévő mértékek vagy képletek használatával. Ezt nevezem mértékelágazási technikának.

A legerősebb funkcióhívás a LuckyTemplatesben

A legerősebb funkcióhívás a LuckyTemplatesben

Ebben a blogban fedezze fel a LuckyTemplates adatkészletet, a leghatékonyabb függvényhívást, amely M- és DAX-függvények ezreit juttatja a keze ügyébe.

Adatmodellezési technikák a DAX-mérések megszervezéséhez

Adatmodellezési technikák a DAX-mérések megszervezéséhez

A mai oktatóanyagban megosztok néhány adatmodellezési technikát a DAX-mérések jobb rendszerezéséhez a hatékonyabb munkafolyamat érdekében.

LuckyTemplates pénzügyi irányítópult: Teljes táblázat testreszabási tippek

LuckyTemplates pénzügyi irányítópult: Teljes táblázat testreszabási tippek

A LuckyTemplates egy nagyszerű eszköz a pénzügyi jelentésekhez. Itt található egy oktatóanyag, amely bemutatja, hogyan hozhat létre személyre szabott táblázatokat a LuckyTemplates pénzügyi irányítópultjához.

A Power Query nyelvi folyamatának bevált gyakorlatai

A Power Query nyelvi folyamatának bevált gyakorlatai

Ez az oktatóanyag megvitatja a Power Query nyelvi folyamatot, és azt, hogyan segíthet zökkenőmentes és hatékony adatjelentések létrehozásában.

LuckyTemplates egyéni ikonok | PBI vizualizációs technika

LuckyTemplates egyéni ikonok | PBI vizualizációs technika

Az egyik kedvenc technikámról fogok beszélni a LuckyTemplates egyéni ikonok körül, amely dinamikusan használja az egyéni ikonokat a LuckyTemplates vizualizációkban.

LuckyTemplates táblázatok létrehozása UNION & ROW függvény használatával

LuckyTemplates táblázatok létrehozása UNION & ROW függvény használatával

Ebben a blogban megmutatom, hogyan hozhat létre LuckyTemplates táblázatokat olyan képlet segítségével, amely egyesíti az UNION és a ROW függvényt.