Å ha klausul i SQL-aggregatfunksjoner

I denne opplæringen skal vi diskutere noen måter vi kan bruke eller utføre HAVING-klausulen i SQL-aggregatfunksjoner på . Å bruke denne klausulen i SQL-aggregatfunksjoner kan i stor grad hjelpe med dataoppsummering.

HAVING -klausul er nesten lik WHERE- setningen og kan også utføres sammen med den.

Vi vil diskutere deres sammenhenger og forskjeller ved å gi eksempler mens vi går gjennom denne opplæringen.

Innholdsfortegnelse

GROUP BY And WHERE-setninger i SQL

For vårt første eksempel skal vi diskutere hvordan du utfører og bruker eksempeltabellen nedenfor. Vær oppmerksom på at vi bare kan bruke WHERE- leddet med eksisterende kolonner og ikke i aggregerte funksjoner alene.

Å ha klausul i SQL-aggregatfunksjoner

La oss si at vi ønsker å få et produkts totale salg basert på SaleAmount- kolonnen der verdien er større enn 2 . For å få resultatet, bør kommandoen vår være følgende:

Å ha klausul i SQL-aggregatfunksjoner

Først velger vi ProductName og samler SaleAmount for å få TotalSales

Å ha klausul i SQL-aggregatfunksjoner

Deretter brukte vi WHERE- setningen her siden vi prøver å få bare produktene der SaleAmount er større enn 2. Kommandoen 'GROUP BY ProductName' indikerer at den vil gruppere rader under kolonnen ProductName til én.

Ved å utføre vårt sett med kommandoer, vil vi se at av alle dataene under kolonnene ProductName og SaleAmount , ble bare Bulb og Fan vist. Det er fordi de var de eneste som hadde et salgsbeløp som er større enn 2.

Å ha klausul i SQL-aggregatfunksjoner

I dette eksemplet er WHERE- setningen for filtrering av resultater med en eksisterende kolonne, som er vår SaleAmount . Vær også oppmerksom på at WHERE -setningen vises foran GROUP BY og kan ikke brukes til å filtrere aggregerte funksjoner. På den annen side vises HAVING- leddet etter GROUP BY og brukes til filtrering basert på en aggregert funksjon. 

GRUPPER ETTER OG HA Klausul i SQL

I dette eksemplet skal vi demonstrere forskjellen mellom WHERE- setningen og HAVING -klausulen. Vi bruker det samme målet som vi har i forrige eksempel, slik at vi kan sammenligne og evaluere resultatene. 

La oss først vise produktene med deres totale salg ved å bruke kommandoen nedenfor. Som du kan se, er vår første kommando fortsatt den samme som vår første kommando som utfører WHERE- setningen.

Å ha klausul i SQL-aggregatfunksjoner

Hvis vi skal utføre de to første kommandoene våre, får vi følgende resultat:

Å ha klausul i SQL-aggregatfunksjoner

La oss nå si at vi bare ønsker å vise produkter hvis totale salg er mer enn 5. Vi kan ikke bruke WHERE-  setningen siden den bare kan brukes med eksisterende kolonner. Derfor må vi bruke HAVING- klausulen siden vi skal filtrere fra en aggregert funksjon. 

Å ha klausul i SQL-aggregatfunksjoner

Legg merke til hvordan vi bruker HAVING- klausulen etter GROUP BY i motsetning til WHERE -setningen som brukes før GROUP BY. Dette er fordi SQL vil gruppere poster før den evaluerer HAVING- leddet. 

La oss deretter utføre disse kommandoene sammen med HAVING SUM(SaleAmount)>5 . Etter å ha spesifisert at vi bare ønsker å få de produktene hvis totalpris er høyere enn 5, vil vi legge merke til at i vår nåværende resultattabell vil vi ikke se pennen lenger . Det er fordi totalen er mindre enn 5

Å ha klausul i SQL-aggregatfunksjoner

Kort sagt, når vi ønsker å filtrere data fra tabellen vår basert på en eksisterende kolonne, bruker vi WHERE-leddet , mens når vi ønsker å filtrere data fra en aggregert funksjon, bruker vi HAVING-leddet

HAVING And WHERE-klausul i SQL Server Management Studio (SSMS)

Nå skal vi gå videre ved å diskutere og demonstrere hvordan vi kan utføre HAVING-klausulen i (SSMS). Vi vil også takle forskjellen mellom HAVING-leddet og WHERE-leddet ved å gi eksempler.

Nedenfor vises vår eksempeldata SalesOrderHeader. Disse dataene består av 100 rader. For eksempelet vårt ønsker vi å TotalSale etter kunde-ID der TotalSale er større enn 10000 . Merk at det totale salget er basert på summen av TotalDue- kolonneverdiene.

Å ha klausul i SQL-aggregatfunksjoner

Først, la meg demonstrere hvorfor vi ikke kan bruke WHERE-leddet når vi ønsker å filtrere på en aggregert funksjon basert på eksemplet ovenfor. 

Vi vil bruke eksempelsettet med kommandoer fra bildet nedenfor. Som du kan se, har vi teknisk sett det samme settet med kommandoer som det vi har fra vårt aller første eksempel.

Men når vi klikker på Utfør i øvre venstre hjørne, vil det resultere i en feil fordi vi ikke kan bruke WHERE -leddet alene når vi filtrerer på aggregatfunksjonen.

Å ha klausul i SQL-aggregatfunksjoner

For å rette feilen må vi filtrere resultatet ved å bruke HAVING -leddet i stedet for WHERE -leddet. Vårt nye sett med kommandoer skal ligne på bildet nedenfor.

Å ha klausul i SQL-aggregatfunksjoner

Nå kan vi se at vår feil er rettet og inneholder resultatene prmed et totalt salg større enn 10 000 .

Igjen, WHERE-leddet brukes alltid før GROUP BY-leddet , mens HAVING-leddet alltid brukes etter et GROUP BY-ledd .

Bruker både HAVING-klausul og WHERE-klausul i SQL  

For dette eksemplet, la oss si at vi vil bruke WHERE og HAVING-leddet samtidig. La oss prøve å få TotalSale etter kunde-ID der TotalSale er større enn 10 000 , men bare med kunder der deres TerritoryID er lik 1

Siden vi ønsker å filtrere resultater med kunder som har 1 som TerritoryID , bruker vi WHERE-klausulen. Så vår kommando bør være den samme som vår forrige. Igjen, vi har lagt til en WHERE-klausul før GROUP BY-klausulen.

Å ha klausul i SQL-aggregatfunksjoner

Foreløpig kan vi ikke se mye forskjell mellom vårt forrige resultat og dette nye. Men hvis du ser nøye på nedre høyre hjørne, har vi nå bare 64 rader sammenlignet med den forrige med 505 rader med data. Det er fordi resultatene er filtrert basert på deres territorium-ID også.

Konklusjon

For å oppsummere kan vi bare bruke WHERE- leddet med eksisterende kolonner. Hvis vi trenger å filtrere med aggregerte funksjoner, må vi bruke HAVING -leddet i stedet.

Å bruke HAVING -leddet i SQL-aggregatfunksjoner og øve på måter å utføre HAVING- leddet og WHERE -leddet sammen kan gi brukerne bekvemmelighet når de arbeider med et stort antall data eller poster. 

Jeg håper jeg har gitt deg nok informasjon og forståelse for hvordan du bruker HAVING -klausulen i SQL-aggregatfunksjoner. Hvis du vil vite mer om dette emnet og annet relatert innhold, kan du absolutt sjekke listen over relevante lenker nedenfor.

Beste ønsker,

Hafiz


Oppdag unik innsikt ved å bruke LuckyTemplates TOPN-funksjon

Oppdag unik innsikt ved å bruke LuckyTemplates TOPN-funksjon

Denne bloggen inneholder LuckyTemplates TOPN DAX-funksjonen, som lar deg få unik innsikt fra dataene dine, og hjelper deg med å ta bedre markedsføringsbeslutninger.

Datamodellering i LuckyTemplates ved hjelp av støttetabeller

Datamodellering i LuckyTemplates ved hjelp av støttetabeller

Lær noen fantastiske analytiske teknikker som vi kan gjøre for datamodellering i LuckyTemplates ved å bruke DAX-støttetabeller.

Avansert DAX for LuckyTemplates: Implementering av rangeringslogikk på tvers av unik innsikt

Avansert DAX for LuckyTemplates: Implementering av rangeringslogikk på tvers av unik innsikt

Her dykker vi ned i LuckyTemplates Advanced DAX og implementerer rangeringslogikk for å få en helt unik innsikt. Jeg viser også frem målegrening i dette eksemplet.

LuckyTemplates What-If-parameterfunksjon

LuckyTemplates What-If-parameterfunksjon

Denne bloggen introduserer den nye funksjonen i LuckyTemplates, What-If-analyseparameteren. Du vil se hvordan det gjør alt raskt og enkelt for scenarioanalysen din.

Bruk LuckyTemplates Mål forgrening for å sjekke om marginene dine øker ettersom inntektene vokser

Bruk LuckyTemplates Mål forgrening for å sjekke om marginene dine øker ettersom inntektene vokser

Finn ut hvordan du kan finne ut om inntektsveksten din er god ved å sjekke om marginene dine økte ved å bruke LuckyTemplates som måler forgrening.

LuckyTemplates Parameters Via Query Editor

LuckyTemplates Parameters Via Query Editor

Lær og forstå hvordan du kan lage og bruke LuckyTemplates Parameters som er en kraftig funksjon i spørringsredigereren.

Rundt stolpediagram – en visualisering for dashbordet ditt

Rundt stolpediagram – en visualisering for dashbordet ditt

Denne opplæringen vil diskutere hvordan du lager et rundt søylediagram ved hjelp av Charticulator. Du vil lære hvordan du designer dem for LuckyTemplates-rapporten.

PowerApps funksjoner og formler | En introduksjon

PowerApps funksjoner og formler | En introduksjon

Lær hvordan du bruker PowerApps-funksjoner og -formler for å forbedre funksjonaliteten og endre atferd i Power Apps-lerretsappen vår.

Pipe In R: Koblingsfunksjoner med Dplyr

Pipe In R: Koblingsfunksjoner med Dplyr

I denne opplæringen lærer du hvordan du kobler funksjoner sammen ved å bruke dplyr-røroperatøren i programmeringsspråket R.

RANKX Deep Dive: A LuckyTemplates DAX-funksjon

RANKX Deep Dive: A LuckyTemplates DAX-funksjon

RANKX fra LuckyTemplates lar deg returnere rangeringen til et spesifikt tall i hver tabellrad som utgjør en del av en liste med tall.