HAVING lauseke SQL Aggregate Functionsissa

Tässä opetusohjelmassa käsittelemme muutamia tapoja, joilla voimme käyttää tai suorittaa HAVING-lausetta SQL-koostefunktioissa . Tämän lausekkeen käyttäminen SQL-koontifunktioissa voi auttaa suuresti tietojen yhteenvedossa.

HAVING- lause on melkein samanlainen kuin WHERE- lause, ja se voidaan myös suorittaa sen mukana.

Keskustelemme niiden korrelaatioista ja eroista antamalla esimerkkejä, kun käymme tätä opetusohjelmaa läpi.

Sisällysluettelo

GROUP BY and WHERE -lauseet SQL:ssä

Ensimmäisessä esimerkissämme keskustelemme alla olevan esimerkkitaulukon suorittamisesta ja sen käyttämisestä. Huomaa, että voimme käyttää WHERE- lausetta vain olemassa olevien sarakkeiden kanssa emmekä pelkästään koostefunktioissa.

HAVING lauseke SQL Aggregate Functionsissa

Oletetaan, että haluamme saada tuotteen kokonaismyynnin sen SaleAmount- sarakkeen perusteella , jossa arvo on suurempi kuin 2 . Tuloksen saamiseksi komentomme tulisi olla seuraava:

HAVING lauseke SQL Aggregate Functionsissa

Ensin valitsemme ProductName ja kokoamme SaleAmount saadaksemme TotalSales

HAVING lauseke SQL Aggregate Functionsissa

Sitten käytimme tässä WHERE -käskyä, koska yritämme saada vain tuotteet, joiden SaleAmount on suurempi kuin 2. Komento GROUP BY ProductName osoittaa, että se ryhmittelee sarakkeen ProductName alla olevat rivit yhdeksi.

Suorittamalla komentosarjamme huomaamme, että kaikista ProductName- ja SaleAmount - sarakkeiden tiedoista vain Polttimo ja Tuuletin näytettiin. Tämä johtuu siitä , että he olivat ainoita, joiden SaleAmount oli suurempi kuin 2.

HAVING lauseke SQL Aggregate Functionsissa

Tässä esimerkissä WHERE -käsky on tarkoitettu tulosten suodattamiseen olemassa olevalla sarakkeella, joka on SaleAmount . Huomaa myös, että WHERE- käsky näkyy ennen GROUP BY:tä , eikä sitä voida käyttää koontifunktioiden suodattamiseen. Toisaalta HAVING- lause ilmestyy GROUP BY:n jälkeen , ja sitä käytetään suodatukseen koontifunktion perusteella. 

GROUP BY ja HAVING lauseke SQL:ssä

Tässä esimerkissä aiomme osoittaa eron WHERE- lauseen ja HAVING- lauseen välillä. Käytämme samaa tavoitetta kuin edellisessä esimerkissä, jotta voimme vertailla ja arvioida tuloksia. 

Esitellään ensin tuotteet ja niiden kokonaismyynti alla olevan komennon avulla. Kuten näet, ensimmäinen komentomme on edelleen sama kuin ensimmäinen komentomme, joka suorittaa WHERE- käskyn.

HAVING lauseke SQL Aggregate Functionsissa

Jos aiomme suorittaa kaksi ensimmäistä komentoamme, saamme seuraavan tuloksen:

HAVING lauseke SQL Aggregate Functionsissa

Oletetaan nyt, että haluamme näyttää vain tuotteet, joiden kokonaismyynti on yli 5. Emme voi käyttää WHERE-  lausetta, koska sitä voidaan käyttää vain olemassa olevien sarakkeiden kanssa. Siksi meidän on käytettävä HAVING- lausetta, koska suodatamme koontifunktiosta. 

HAVING lauseke SQL Aggregate Functionsissa

Huomaa, kuinka käytämme HAVING- lausetta GROUP BY:n jälkeen toisin kuin WHERE -lausetta ennen GROUP BY:tä. Tämä johtuu siitä, että SQL ryhmittelee tietueet ennen kuin se arvioi HAVING -lauseen. 

Suoritetaan sitten nämä komennot yhdessä HAVING SUM(SaleAmount)>5 kanssa . Määritettyämme, että haluamme saada vain ne tuotteet, joiden kokonaishinta on suurempi kuin 5, huomaamme, että nykyisessä tulostaulukossamme emme enää näe kynää . Tämä johtuu siitä, että sen kokonaismäärä on alle 5

HAVING lauseke SQL Aggregate Functionsissa

Lyhyesti sanottuna, kun haluamme suodattaa tietoja taulukostamme olemassa olevan sarakkeen perusteella, käytämme WHERE-lausetta , kun taas kun haluamme suodattaa tiedot koostefunktiosta, käytämme HAVING-lausetta

HAVING and WHERE -lauseke SQL Server Management Studiossa (SSMS)

Nyt siirrymme eteenpäin keskustelemalla ja osoittamalla, kuinka voimme suorittaa HAVING-lausekkeen (SSMS). Käsittelemme myös eroa HAVING- ja WHERE-lauseen välillä antamalla esimerkkejä.

Alla on näytetietomme SalesOrderHeader. Tämä data koostuu 100 rivistä. Esimerkissämme haluamme saada TotalSale-arvon asiakastunnuksella , jossa TotalSale on suurempi kuin 10 000 . Huomaa, että kokonaismyynti perustuu TotalDue- sarakkeen arvojen summaan.

HAVING lauseke SQL Aggregate Functionsissa

Ensinnäkin haluan osoittaa, miksi emme voi käyttää WHERE-lausetta , kun haluamme suodattaa aggregaattifunktion yllä olevan esimerkimme perusteella. 

Käytämme alla olevan kuvan esimerkkikomentoja. Kuten näet, meillä on teknisesti samat komentosarjat kuin ensimmäisestä esimerkistämme lähtien.

Kuitenkin, kun napsautamme Suorita vasemmassa yläkulmassa, se johtaa virheeseen, koska emme voi käyttää yksin WHERE- lausetta, kun suodatamme koontifunktiota.

HAVING lauseke SQL Aggregate Functionsissa

Virheen korjaamiseksi meidän on suodatettava tulos käyttämällä HAVING- lausetta WHERE- lauseen sijaan . Uuden komentosarjamme pitäisi olla samanlainen kuin alla oleva kuva.

HAVING lauseke SQL Aggregate Functionsissa

Nyt voimme nähdä, että virheemme on korjattu ja sisältää tulokset perjoiden kokonaismyynti on yli 10 000 .

Jälleen WHERE-lausetta käytetään aina ennen GROUP BY -lausetta , kun taas HAVING-lausetta käytetään aina GROUP BY -lauseen jälkeen .

Sekä HAVING- että WHERE-lauseen käyttäminen SQL:ssä  

Oletetaan tässä esimerkissä, että haluamme käyttää WHERE- ja HAVING-lauseita samanaikaisesti. Yritetään saada TotalSale asiakastunnuksella , jossa TotalSale on suurempi kuin 10 000 , mutta vain asiakkailla, joiden aluetunnus on 1

Koska haluamme suodattaa tuloksia asiakkaiden kanssa, joiden TerritoryID on 1 , käytämme WHERE-lausetta. Joten komentomme tulisi olla sama kuin edellinen. Olemme jälleen lisänneet WHERE-lauseen ennen GROUP BY -lausetta.

HAVING lauseke SQL Aggregate Functionsissa

Toistaiseksi emme näe paljon eroa edellisen tuloksemme ja tämän uuden välillä. Jos kuitenkin katsot tarkasti oikeaa alakulmaa, meillä on nyt vain 64 riviä verrattuna edelliseen, jossa oli 505 riviä tietoja. Tämä johtuu siitä, että tulokset suodatetaan myös niiden TerritoryID:n perusteella.

Johtopäätös

Yhteenvetona voimme käyttää WHERE- lausetta vain olemassa olevien sarakkeiden kanssa. Jos meidän on suodatettava aggregoiduilla funktioilla, meidän on käytettävä sen sijaan HAVING -lausetta.

HAVING -lauseen käyttäminen SQL-koontifunktioissa ja HAVING- lauseen ja WHERE- lauseen yhdessä suorittamisen harjoittaminen voi tarjota käyttäjille mukavuutta työskennellessään suuren datamäärän tai tietueiden parissa. 

Toivon, että olen antanut sinulle tarpeeksi tietoa ja ymmärrystä HAVING -lauseen käytöstä SQL-koostefunktioissa. Jos haluat tietää lisää tästä aiheesta ja muusta siihen liittyvästä sisällöstä, voit varmasti tutustua alla olevaan asiaankuuluvien linkkien luetteloon.

Kaikki parhaat,

Hafiz


Kuinka asentaa DAX Studio & Tabular Editor LuckyTemplatesissa

Kuinka asentaa DAX Studio & Tabular Editor LuckyTemplatesissa

Opi lataamaan ja asentamaan DAX Studio ja Tabular Editor 3 ja miten ne määritetään käytettäväksi LuckyTemplatesissa ja Excelissä.

LuckyTemplates -muotokartan visualisointi tilaanalyysiin

LuckyTemplates -muotokartan visualisointi tilaanalyysiin

Tämä blogi sisältää Shape Map -visualisoinnin tilaanalyysiä varten LuckyTemplatesissa. Näytän sinulle, kuinka voit käyttää tätä visualisointia tehokkaasti sen ominaisuuksien ja elementtien kanssa.

LuckyTemplatesin talousraportointi: tulosten kohdentaminen malleihin jokaisella rivillä

LuckyTemplatesin talousraportointi: tulosten kohdentaminen malleihin jokaisella rivillä

Tässä opetusohjelmassa esittelen ainutlaatuisen idean talousraportoinnista, joka allokoi tulokset LuckyTemplatesin sisällä olevien taulukkopohjien ennalta määrittämiseen.

DAX-mittaukset LuckyTemplatesissa käyttämällä mittahaaroitusta

DAX-mittaukset LuckyTemplatesissa käyttämällä mittahaaroitusta

Luo DAX-suureita LuckyTemplatesissa käyttämällä olemassa olevia suureita tai kaavoja. Tätä kutsun mittahaaroitustekniikaksi.

Tehokkain toimintopuhelu LuckyTemplatesissa

Tehokkain toimintopuhelu LuckyTemplatesissa

Tässä blogissa tutustu LuckyTemplates-tietojoukkoon, tehokkaimpaan funktiokutsuun, joka tuo tuhansia M- ja DAX-funktioita sormiesi ulottuville.

Datamallinnustekniikat DAX-mittausten järjestämiseen

Datamallinnustekniikat DAX-mittausten järjestämiseen

Tämän päivän opetusohjelmassa jaan muutamia datamallinnustekniikoita DAX-mittausten järjestämiseksi paremmin tehokkaamman työnkulun aikaansaamiseksi.

LuckyTemplates Financial Dashboard: Täydelliset taulukon mukautusvinkit

LuckyTemplates Financial Dashboard: Täydelliset taulukon mukautusvinkit

LuckyTemplates on loistava työkalu talousraportointiin. Tässä on opetusohjelma räätälöityjen taulukoiden luomisesta LuckyTemplates-talouden hallintapaneelillesi.

Power Queryn kielivirran parhaat käytännöt

Power Queryn kielivirran parhaat käytännöt

Tässä opetusohjelmassa keskustellaan Power Query Language Flowsta ja siitä, kuinka se voi auttaa luomaan sujuvan ja tehokkaan dataraportin.

LuckyTemplates mukautetut kuvakkeet | PBI-visualisointitekniikka

LuckyTemplates mukautetut kuvakkeet | PBI-visualisointitekniikka

Keskustelen yhdestä suosikkitekniikoistani mukautettujen LuckyTemplates-kuvakkeiden ympärillä, joka käyttää mukautettuja kuvakkeita dynaamisella tavalla LuckyTemplates-visuaaleissa.

LuckyTemplates -taulukoiden luominen UNION & ROW -funktiolla

LuckyTemplates -taulukoiden luominen UNION & ROW -funktiolla

Tässä blogissa näytän sinulle, kuinka voit luoda LuckyTemplates-taulukoita käyttämällä kaavaa, joka yhdistää UNION-funktion ja ROW-funktion.