HAVING Klausul i SQL samlede funktioner

I denne øvelse vil vi diskutere nogle få måder, hvorpå vi kan bruge eller udføre HAVING-sætningen i SQL-aggregatfunktioner . Brug af denne klausul i SQL-aggregatfunktioner kan i høj grad hjælpe med at opsummere data.

HAVING- sætning ligner næsten WHERE -sætningen og kan også udføres sammen med den.

Vi vil diskutere deres sammenhænge og forskelle ved at give eksempler, mens vi gennemgår denne øvelse.

Indholdsfortegnelse

GROUP BY And WHERE-udsagn i SQL

For vores første eksempel vil vi diskutere, hvordan man udfører og bruger eksempeltabellen nedenfor. Bemærk venligst, at vi kun kan bruge WHERE -udtrykket med eksisterende kolonner og ikke i aggregerede funktioner alene.

HAVING Klausul i SQL samlede funktioner

Lad os sige, at vi ønsker at få et produkts samlede salg baseret på kolonnen SaleAmount , hvor værdien er større end 2 . For at få resultatet skal vores kommando være følgende:

HAVING Klausul i SQL samlede funktioner

Først vælger vi produktnavnet og samler salgsbeløbet for at få det samlede salg. 

HAVING Klausul i SQL samlede funktioner

Derefter brugte vi WHERE- sætningen her, da vi kun forsøger at få de produkter, hvor SaleAmount er større end 2. Kommandoen 'GROUP BY ProductName' angiver, at den vil gruppere rækker under kolonnen ProductName til én.

Ved at udføre vores sæt af kommandoer vil vi se, at ud af alle data under kolonnerne Produktnavn og Salgsbeløb , var det kun Bulb og Fan , der blev vist. Det er fordi de var de eneste, der havde et salgsbeløb , der er større end 2.

HAVING Klausul i SQL samlede funktioner

I dette eksempel er WHERE- sætningen til filtrering af resultater med en eksisterende kolonne, som er vores SaleAmount . Bemærk også, at WHERE- sætningen vises før GROUP BY og ikke kan bruges til at filtrere aggregerede funktioner. På den anden side vises HAVING- udtrykket efter GROUP BY og bruges til filtrering baseret på en aggregeret funktion. 

GRUPPER BY OG HAVING Klausul i SQL

I dette eksempel skal vi demonstrere forskellen mellem WHERE- sætningen og HAVING -sætningen. Vi vil bruge det samme mål, som vi har i det foregående eksempel, så vi kan sammenligne og evaluere resultaterne. 

Lad os først vise produkter med deres samlede salg ved hjælp af kommandoen nedenfor. Som du kan se, er vores første kommando stadig den samme som vores første kommando, der udfører WHERE -sætningen.

HAVING Klausul i SQL samlede funktioner

Hvis vi skal udføre vores første to kommandoer, får vi følgende resultat:

HAVING Klausul i SQL samlede funktioner

Lad os nu sige, at vi kun ønsker at vise produkter, hvis samlede salg er mere end 5. Vi kan ikke bruge WHERE-  sætningen, da den kun kan bruges med eksisterende kolonner. Derfor er vi nødt til at bruge HAVING- sætning, da vi filtrerer fra en aggregeret funktion. 

HAVING Klausul i SQL samlede funktioner

Læg mærke til, hvordan vi bruger HAVING- sætning efter GROUP BY i modsætning til WHERE -sætningen, der bruges før GROUP BY. Dette skyldes, at SQL vil gruppere poster, før den evaluerer HAVING- sætningen. 

Lad os derefter udføre disse kommandoer sammen med HAVING SUM(SaleAmount)>5 . Efter at have specificeret, at vi kun ønsker at få de produkter, hvis samlede pris er større end 5, vil vi bemærke, at i vores nuværende tabel med resultater, vil vi ikke se pennen længere . Det er fordi dets samlede antal er mindre end 5

HAVING Klausul i SQL samlede funktioner

Kort sagt, når vi ønsker at filtrere data fra vores tabel baseret på en eksisterende kolonne, bruger vi WHERE-sætningen , hvorimod når vi vil filtrere data fra en aggregeret funktion, bruger vi HAVING-sætningen

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

Nu går vi videre ved at diskutere og demonstrere, hvordan vi kan udføre HAVING-sætningen i (SSMS). Vi vil også tackle forskellen mellem HAVING-sætningen og WHERE-sætningen ved at give eksempler.

Nedenfor er vores eksempeldata SalesOrderHeader. Disse data består af 100 rækker. For vores eksempel ønsker vi at TotalSale efter kunde-ID , hvor TotalSale er større end 10000 . Bemærk, at det samlede salg er baseret på summen af ​​værdierne i kolonnen TotalDue .

HAVING Klausul i SQL samlede funktioner

Lad mig først demonstrere, hvorfor vi ikke kan bruge WHERE-sætningen , når vi vil filtrere på en aggregeret funktion baseret på vores eksempel ovenfor. 

Vi bruger prøvesættet af kommandoer fra billedet nedenfor. Som du kan se, har vi teknisk set det samme sæt kommandoer som det, vi har fra vores allerførste eksempel.

Men når vi klikker på Udfør i øverste venstre hjørne, vil det resultere i en fejl, fordi vi ikke kan bruge WHERE- sætningen alene, når vi filtrerer på den samlede funktion.

HAVING Klausul i SQL samlede funktioner

For at rette fejlen skal vi filtrere resultatet ved hjælp af HAVING -sætningen i stedet for WHERE- sætningen. Vores nye sæt kommandoer skal ligne billedet nedenfor.

HAVING Klausul i SQL samlede funktioner

Nu kan vi se, at vores fejl er rettet og indeholder resultaterne prmed et samlet salg på mere end 10.000 .

Igen bruges WHERE-udtrykket altid før GROUP BY-udtrykket , mens HAVING-udtrykket altid bruges efter et GROUP BY-udtryk .

Brug af både HAVING-klausul og WHERE-klausul i SQL  

For dette eksempel, lad os sige, at vi vil bruge WHERE og HAVING-sætningen på samme tid. Lad os prøve at få TotalSale efter kunde-id , hvor TotalSale er større end 10000 , men kun med kunder, hvor deres territorium-id er lig med 1

Da vi ønsker at filtrere resultater med kunder, der har 1 som deres TerritoryID , bruger vi WHERE-sætningen. Så vores kommando bør være den samme som vores tidligere. Igen har vi tilføjet en WHERE-sætning før GROUP BY-sætningen.

HAVING Klausul i SQL samlede funktioner

Indtil videre kan vi ikke se den store forskel mellem vores tidligere resultat og dette nye. Men hvis du ser nærmere på det nederste højre hjørne, har vi nu kun 64 rækker sammenlignet med den forrige med 505 rækker data. Det skyldes, at resultaterne også filtreres ud fra deres territorium-id .

Konklusion

For at opsummere kan vi kun bruge WHERE -sætningen med eksisterende kolonner. Hvis vi skal filtrere med aggregerede funktioner, skal vi bruge HAVING -sætningen i stedet.

Brug af HAVING -udtrykket i SQL-aggregatfunktioner og øve måder at udføre HAVING- udtrykket og WHERE -udtrykket sammen kan give brugerne bekvemmelighed, når de arbejder på et stort antal data eller poster. 

Jeg håber, jeg har givet dig tilstrækkelig information og forståelse for, hvordan du bruger HAVING- sætningen i SQL-aggregatfunktioner. Hvis du gerne vil vide mere om dette emne og andet relateret indhold, kan du helt sikkert tjekke listen over relevante links nedenfor.

Alt det bedste,

Hafiz


Pipe In R: Tilslutningsfunktioner med Dplyr

Pipe In R: Tilslutningsfunktioner med Dplyr

I denne øvelse lærer du, hvordan du kæder funktioner sammen ved hjælp af dplyr-røroperatoren i programmeringssproget R.

RANKX Deep Dive: A Lucky Templates DAX-funktion

RANKX Deep Dive: A Lucky Templates DAX-funktion

RANKX fra LuckyTemplates giver dig mulighed for at returnere rangeringen af ​​et specifikt tal i hver tabelrække, der udgør en del af en liste over tal.

Udpakning af LuckyTemplates-temaer og -billeder fra PBIX

Udpakning af LuckyTemplates-temaer og -billeder fra PBIX

Lær, hvordan du adskiller en PBIX-fil for at udtrække LuckyTemplates-temaer og -billeder fra baggrunden og bruge den til at oprette din rapport!

Excel Formler Snydeark: Mellemvejledning

Excel Formler Snydeark: Mellemvejledning

Excel Formler Snydeark: Mellemvejledning

LuckyTemplates kalendertabel: Hvad er det, og hvordan man bruger det

LuckyTemplates kalendertabel: Hvad er det, og hvordan man bruger det

LuckyTemplates kalendertabel: Hvad er det, og hvordan man bruger det

Python i LuckyTemplates: Sådan installeres og konfigureres

Python i LuckyTemplates: Sådan installeres og konfigureres

Lær, hvordan du installerer programmeringssproget Python i LuckyTemplates, og hvordan du bruger dets værktøjer til at skrive koder og vise billeder.

Beregning af dynamiske fortjenestemargener – nem analyse af LuckyTemplates med DAX

Beregning af dynamiske fortjenestemargener – nem analyse af LuckyTemplates med DAX

Lær, hvordan du beregner dynamiske fortjenstmargener ved siden af ​​LuckyTemplates, og hvordan du kan få mere indsigt ved at grave dybere ned i resultaterne.

Sortering af datotabelkolonner i LuckyTemplates

Sortering af datotabelkolonner i LuckyTemplates

Lær, hvordan du sorterer felterne fra kolonner med udvidet datotabel korrekt. Dette er en god strategi at gøre for vanskelige felter.

Find dine topprodukter for hver region i LuckyTemplates ved hjælp af DAX

Find dine topprodukter for hver region i LuckyTemplates ved hjælp af DAX

I denne artikel gennemgår jeg, hvordan du kan finde dine topprodukter pr. region ved hjælp af DAX-beregninger i LuckyTemplates, herunder funktionerne TOPN og CALCUATE.

Junk Dimension: Hvad er det, og hvorfor det er alt andet end junk

Junk Dimension: Hvad er det, og hvorfor det er alt andet end junk

Lær, hvordan du bruger en uønsket dimension til flag med lav kardinalitet, som du ønsker at inkorporere i din datamodel på en effektiv måde.