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

Leave a Comment

Oplev unik indsigt ved hjælp af LuckyTemplates TOPN-funktion

Oplev unik indsigt ved hjælp af LuckyTemplates TOPN-funktion

Denne blog indeholder LuckyTemplates TOPN DAX-funktionen, som giver dig mulighed for at få unik indsigt fra dine data, hvilket hjælper dig med at træffe bedre markedsføringsbeslutninger.

Oprettelse af en datotabel i LuckyTemplates

Oprettelse af en datotabel i LuckyTemplates

Find ud af, hvorfor det er vigtigt at have en dedikeret datotabel i LuckyTemplates, og lær den hurtigste og mest effektive måde at gøre det på.

LuckyTemplates Mobile Reporting Tips og teknikker

LuckyTemplates Mobile Reporting Tips og teknikker

Denne korte vejledning fremhæver LuckyTemplates mobilrapporteringsfunktion. Jeg vil vise dig, hvordan du kan udvikle rapporter effektivt til mobilenheder.

Professionelle serviceanalyserapporter i LuckyTemplates

Professionelle serviceanalyserapporter i LuckyTemplates

I denne LuckyTemplates Showcase gennemgår vi rapporter, der viser professionel serviceanalyse fra et firma, der har flere kontrakter og kundeengagementer.

Microsoft Power Platform-opdateringer | Microsoft Ignite 2021

Microsoft Power Platform-opdateringer | Microsoft Ignite 2021

Gå gennem de vigtigste opdateringer til Power Apps og Power Automate og deres fordele og implikationer for Microsoft Power Platform.

Almindelige SQL-funktioner: En oversigt

Almindelige SQL-funktioner: En oversigt

Opdag nogle almindelige SQL-funktioner, som vi kan bruge, såsom streng, dato og nogle avancerede funktioner til at behandle eller manipulere data.

LuckyTemplates skabelonoprettelse: Guide og tips

LuckyTemplates skabelonoprettelse: Guide og tips

I denne tutorial lærer du, hvordan du opretter din perfekte LuckyTemplates-skabelon, der er konfigureret til dine behov og præferencer.

Feltparametre og små multipler i LuckyTemplates

Feltparametre og små multipler i LuckyTemplates

I denne blog vil vi demonstrere, hvordan man lagdelte feltparametre med små multipler for at skabe utrolig nyttig indsigt og visuals.

LuckyTemplates-rangering og brugerdefineret gruppering

LuckyTemplates-rangering og brugerdefineret gruppering

I denne blog vil du lære, hvordan du bruger LuckyTemplates rangerings- og brugerdefinerede grupperingsfunktioner til at segmentere et eksempeldata og rangordne det efter kriterier.

Viser kun kumulativ total op til en bestemt dato i LuckyTemplates

Viser kun kumulativ total op til en bestemt dato i LuckyTemplates

I denne tutorial vil jeg dække en specifik teknik omkring, hvordan du kun viser Kumulativ Total op til en bestemt dato i dine visuals i LuckyTemplates.