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.
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.
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:
Først vælger vi produktnavnet og samler salgsbeløbet for at få det samlede salg.
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.
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.
Hvis vi skal udføre vores første to kommandoer, får vi følgende resultat:
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.
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 .
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 få 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 .
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.
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.
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.
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
I denne øvelse lærer du, hvordan du kæder funktioner sammen ved hjælp af dplyr-røroperatoren i programmeringssproget R.
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.
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
LuckyTemplates kalendertabel: Hvad er det, og hvordan man bruger det
Lær, hvordan du installerer programmeringssproget Python i LuckyTemplates, og hvordan du bruger dets værktøjer til at skrive koder og vise billeder.
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.
Lær, hvordan du sorterer felterne fra kolonner med udvidet datotabel korrekt. Dette er en god strategi at gøre for vanskelige felter.
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.
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.