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


Päivämäärätaulukon luominen LuckyTemplatesissa

Päivämäärätaulukon luominen LuckyTemplatesissa

Ota selvää, miksi LuckyTemplatesissa on tärkeää pitää oma päivämäärätaulukko ja opi nopein ja tehokkain tapa tehdä se.

LuckyTemplates mobiiliraportointivinkkejä ja -tekniikoita

LuckyTemplates mobiiliraportointivinkkejä ja -tekniikoita

Tämä lyhyt opetusohjelma korostaa LuckyTemplates-mobiiliraportointiominaisuutta. Näytän sinulle, kuinka voit kehittää raportteja tehokkaasti mobiililaitteille.

Ammattimainen palveluanalyysiraportit LuckyTemplatesissa

Ammattimainen palveluanalyysiraportit LuckyTemplatesissa

Tässä LuckyTemplates Showcase -esittelyssä käymme läpi raportteja, jotka näyttävät ammattitaitoisen palveluanalytiikan yritykseltä, jolla on useita sopimuksia ja asiakkaiden sitoumuksia.

Microsoft Power Platform -päivitykset | Microsoft Ignite 2021

Microsoft Power Platform -päivitykset | Microsoft Ignite 2021

Käy läpi tärkeimmät Power Appsin ja Power Automaten päivitykset sekä niiden edut ja vaikutukset Microsoft Power Platformiin.

Yleiset SQL-funktiot: Yleiskatsaus

Yleiset SQL-funktiot: Yleiskatsaus

Tutustu joihinkin yleisiin SQL-toimintoihin, joita voimme käyttää, kuten merkkijono, päivämäärä ja joitain lisätoimintoja tietojen käsittelyyn tai käsittelyyn.

LuckyTemplates-mallin luominen: opas ja vinkkejä

LuckyTemplates-mallin luominen: opas ja vinkkejä

Tässä opetusohjelmassa opit luomaan täydellisen LuckyTemplates-mallin, joka on määritetty tarpeidesi ja mieltymystesi mukaan.

Kenttäparametrit ja pienet kertoimet LuckyTemplatesissa

Kenttäparametrit ja pienet kertoimet LuckyTemplatesissa

Tässä blogissa esittelemme, kuinka kerrostat kenttäparametreja pienillä kerroilla uskomattoman hyödyllisten näkemysten ja visuaalien luomiseksi.

LuckyTemplates-sijoitus ja mukautettu ryhmittely

LuckyTemplates-sijoitus ja mukautettu ryhmittely

Tässä blogissa opit käyttämään LuckyTemplates-sijoitus- ja mukautettuja ryhmittelyominaisuuksia näytetietojen segmentoimiseen ja luokitteluun kriteerien mukaan.

LuckyTemplatesissa näytetään vain tiettyyn päivämäärään asti kumulatiivinen kokonaissumma

LuckyTemplatesissa näytetään vain tiettyyn päivämäärään asti kumulatiivinen kokonaissumma

Tässä opetusohjelmassa käsittelen tiettyä tekniikkaa, jolla voit näyttää kumulatiivisen kokonaissumman LuckyTemplates-visuaaleissasi vain tiettyyn päivämäärään asti.

Bullet Charts: Kehittyneet mukautetut visuaalit LuckyTemplatesille

Bullet Charts: Kehittyneet mukautetut visuaalit LuckyTemplatesille

Opi luomaan ja mukauttamaan Bullet-kaavioita LuckyTemplatesissa, joita käytetään pääasiassa suorituskyvyn mittaamiseen suhteessa tavoitteeseen tai edellisiin vuosiin.