HAVING-clausule in SQL-aggregatiefuncties

HAVING-clausule in SQL-aggregatiefuncties

In deze zelfstudie bespreken we enkele manieren waarop we de HAVING-clausule in SQL-aggregatiefuncties kunnen gebruiken of uitvoeren . Het gebruik van deze clausule in SQL-aggregatiefuncties kan enorm helpen bij het samenvatten van gegevens.

De HAVING- clausule lijkt bijna op de WHERE- instructie en kan er ook mee worden uitgevoerd.

We zullen hun correlaties en verschillen bespreken door voorbeelden te geven tijdens het doorlopen van deze zelfstudie.

Inhoudsopgave

GROUP BY en WHERE Verklaringen in SQL

Voor ons eerste voorbeeld bespreken we hoe de WHERE-clausule en GROUP BY moeten worden uitgevoerd met behulp van de onderstaande voorbeeldtabel. Houd er rekening mee dat we de WHERE- clausule alleen kunnen gebruiken met bestaande kolommen en niet alleen in geaggregeerde functies.

HAVING-clausule in SQL-aggregatiefuncties

Laten we zeggen dat we de totale verkoop van een product willen krijgen op basis van de kolom SaleAmount , waarbij de waarde groter is dan 2 . Om het resultaat te krijgen, zou ons commando het volgende moeten zijn:

HAVING-clausule in SQL-aggregatiefuncties

Eerst selecteren we de ProductName en aggregeren we de SaleAmount om de TotalSales te krijgen. 

HAVING-clausule in SQL-aggregatiefuncties

Vervolgens hebben we hier de WHERE- instructie gebruikt, omdat we alleen de producten proberen te krijgen waarvan de SaleAmount groter is dan 2. Het commando 'GROUP BY ProductName' geeft aan dat het rijen onder de kolom ProductName groepeert tot één.

Door onze reeks opdrachten uit te voeren , zullen we zien dat van alle gegevens onder de kolommen ProductName en SaleAmount alleen Bulb en Fan werden weergegeven. Dat komt omdat zij de enige waren met een SaleAmount die groter is dan 2.

HAVING-clausule in SQL-aggregatiefuncties

In dit voorbeeld is de WHERE- instructie voor het filteren van resultaten met een bestaande kolom, onze SaleAmount . Merk ook op dat de WHERE- instructie vóór de GROUP BY verschijnt en niet kan worden gebruikt om statistische functies te filteren. Aan de andere kant verschijnt de HAVING- clausule na de GROUP BY en wordt gebruikt voor filteren op basis van een statistische functie. 

GROUP BY en HAVING-clausule in SQL

In dit voorbeeld gaan we het verschil demonstreren tussen de WHERE- instructie en de HAVING- component. We gebruiken hetzelfde doel als in het vorige voorbeeld, zodat we de resultaten kunnen vergelijken en evalueren. 

Laten we eerst producten weergeven met hun totale verkoop met behulp van de onderstaande opdracht. Zoals je kunt zien, is ons eerste commando nog steeds hetzelfde als ons eerste commando dat de WHERE- instructie uitvoert.

HAVING-clausule in SQL-aggregatiefuncties

Als we onze eerste twee opdrachten moeten uitvoeren, hebben we het volgende resultaat:

HAVING-clausule in SQL-aggregatiefuncties

Laten we nu zeggen dat we alleen producten willen weergeven waarvan de totale verkoop meer dan 5 is. We kunnen de WHERE-  instructie niet gebruiken, omdat deze alleen kan worden gebruikt met bestaande kolommen. Daarom moeten we de HAVING- clausule gebruiken, omdat we filteren vanuit een statistische functie. 

HAVING-clausule in SQL-aggregatiefuncties

Merk op hoe we de HAVING- component gebruiken na GROUP BY, in tegenstelling tot de WHERE -instructie die vóór GROUP BY wordt gebruikt . Dit komt doordat de SQL records groepeert voordat de HAVING- clausule wordt geëvalueerd. 

Laten we die opdrachten dan samen met HAVING SUM(SaleAmount)>5 uitvoeren . Nadat we hebben aangegeven dat we alleen die producten willen hebben waarvan de totale prijs hoger is dan 5, zullen we merken dat we in onze huidige tabel met resultaten de pen niet meer zullen zien. Dat komt omdat het totaal minder is dan 5

HAVING-clausule in SQL-aggregatiefuncties

Kort gezegd, als we gegevens uit onze tabel willen filteren op basis van een bestaande kolom, gebruiken we de WHERE-component , terwijl we de HAVING-component gebruiken als we gegevens uit een geaggregeerde functie willen filteren . 

HAVING en WHERE-clausule in SQL Server Management Studio (SSMS)

Nu gaan we verder door te bespreken en te demonstreren hoe we de HAVING-component in SQL Server Management Studio (SSMS) kunnen uitvoeren. We zullen ook het verschil tussen de HAVING-component en de WHERE-component behandelen door voorbeelden te geven.

Hieronder ziet u onze voorbeeldgegevens SalesOrderHeader. Deze gegevens bestaan ​​uit 100 rijen. Voor ons voorbeeld willen we TotalSale krijgen op CustomerID waarbij TotalSale groter is dan 10000 . Houd er rekening mee dat de totale verkoop is gebaseerd op de som van de TotalDue- kolomwaarden.

HAVING-clausule in SQL-aggregatiefuncties

Laat me eerst demonstreren waarom we de WHERE-clausule niet kunnen gebruiken als we willen filteren op een statistische functie op basis van ons voorbeeld hierboven. 

We gebruiken de voorbeeldset met opdrachten uit de onderstaande afbeelding. Zoals je kunt zien, hebben we technisch gezien dezelfde set commando's als die we hebben in ons allereerste voorbeeld.

Wanneer we echter op Uitvoeren in de linkerbovenhoek klikken, resulteert dit in een fout omdat we de WHERE- clausule niet alleen kunnen gebruiken wanneer we filteren op de statistische functie.

HAVING-clausule in SQL-aggregatiefuncties

Om de fout te corrigeren, moeten we het resultaat filteren met behulp van de HAVING- component in plaats van de WHERE- component. Onze nieuwe reeks opdrachten zou vergelijkbaar moeten zijn met de onderstaande afbeelding.

HAVING-clausule in SQL-aggregatiefuncties

Nu kunnen we zien dat onze fout is gecorrigeerd en de resultaten bevat per CustomerID met een TotalSale groter dan 10000 .

Nogmaals, de WHERE-component wordt altijd vóór de GROUP BY-component gebruikt , terwijl de HAVING-component altijd na een GROUP BY-component wordt gebruikt .

Gebruik zowel de HAVING-clausule als de WHERE-clausule in SQL  

Laten we voor dit voorbeeld aannemen dat we de WHERE- en HAVING-clausule tegelijkertijd willen gebruiken . Laten we proberen de TotalSale op CustomerID te krijgen waarbij TotalSale groter is dan 10000 , maar alleen met klanten waarvan hun TerritoryID gelijk is aan 1

Omdat we resultaten willen filteren met klanten die 1 als hun TerritoryID hebben , gebruiken we de WHERE-component. Dus ons commando zou hetzelfde moeten zijn als ons vorige. Nogmaals, we hebben een WHERE-component toegevoegd vóór de GROUP BY-component.

HAVING-clausule in SQL-aggregatiefuncties

Voorlopig kunnen we niet veel verschil zien tussen ons vorige resultaat en dit nieuwe resultaat. Als u echter goed naar de rechterbenedenhoek kijkt, hebben we nu slechts 64 rijen in vergelijking met de vorige met 505 rijen met gegevens. Dat komt omdat de resultaten ook worden gefilterd op basis van hun TerritoryID .

Conclusie

Samenvattend kunnen we de WHERE- clausule alleen gebruiken met bestaande kolommen. Als we moeten filteren met geaggregeerde functies, moeten we in plaats daarvan de HAVING- component gebruiken.

Het gebruik van de HAVING- component in SQL-aggregatiefuncties en het oefenen van manieren om de HAVING- component en WHERE -component samen uit te voeren, kan gebruikers gemak bieden bij het werken aan een groot aantal gegevens of records. 

Ik hoop dat ik u voldoende informatie en begrip heb gegeven over het gebruik van de HAVING- component in geaggregeerde SQL-functies. Als u meer wilt weten over dit onderwerp en andere gerelateerde inhoud, kunt u zeker de lijst met relevante links hieronder bekijken.

Al het beste,

Hafiz


Wat is zelf in Python: voorbeelden uit de echte wereld

Wat is zelf in Python: voorbeelden uit de echte wereld

Wat is zelf in Python: voorbeelden uit de echte wereld

Een RDS-bestand opslaan en laden in R

Een RDS-bestand opslaan en laden in R

Je leert hoe je objecten uit een .rds-bestand in R opslaat en laadt. In deze blog wordt ook besproken hoe je objecten uit R naar LuckyTemplates importeert.

First N Business Days Revisited – Een DAX-coderingstaaloplossing

First N Business Days Revisited – Een DAX-coderingstaaloplossing

In deze tutorial over DAX-coderingstaal leert u hoe u de functie GENERATE gebruikt en hoe u de titel van een maat dynamisch wijzigt.

Breng inzichten onder de aandacht met behulp van de Multi Threaded Dynamic Visuals-techniek in LuckyTemplates

Breng inzichten onder de aandacht met behulp van de Multi Threaded Dynamic Visuals-techniek in LuckyTemplates

Deze zelfstudie behandelt hoe u de Multi Threaded Dynamic Visuals-techniek kunt gebruiken om inzichten te creëren op basis van dynamische gegevensvisualisaties in uw rapporten.

Inleiding tot het filteren van context in LuckyTemplates

Inleiding tot het filteren van context in LuckyTemplates

In dit artikel zal ik de filtercontext doornemen. Filtercontext is een van de belangrijkste onderwerpen waarover elke LuckyTemplates-gebruiker in eerste instantie zou moeten leren.

Beste tips voor het gebruik van de apps in LuckyTemplates Online Service

Beste tips voor het gebruik van de apps in LuckyTemplates Online Service

Ik wil laten zien hoe de online service LuckyTemplates Apps kan helpen bij het beheren van verschillende rapporten en inzichten die uit verschillende bronnen zijn gegenereerd.

Analyseer winstmargeveranderingen in de loop van de tijd - analyse met LuckyTemplates en DAX

Analyseer winstmargeveranderingen in de loop van de tijd - analyse met LuckyTemplates en DAX

Leer hoe u wijzigingen in uw winstmarge kunt berekenen met behulp van technieken zoals vertakking van metingen en het combineren van DAX-formules in LuckyTemplates.

Materialisatie-ideeën voor gegevenscaches in DAX Studio

Materialisatie-ideeën voor gegevenscaches in DAX Studio

Deze tutorial bespreekt de ideeën van materialisatie van datacaches en hoe deze de prestaties van DAX beïnvloeden bij het leveren van resultaten.

Zakelijke rapportage met behulp van LuckyTemplates

Zakelijke rapportage met behulp van LuckyTemplates

Als u tot nu toe nog steeds Excel gebruikt, is dit het beste moment om LuckyTemplates te gaan gebruiken voor uw zakelijke rapportagebehoeften.

Wat is LuckyTemplates Gateway? Alles wat u moet weten

Wat is LuckyTemplates Gateway? Alles wat u moet weten

Wat is LuckyTemplates Gateway? Alles wat u moet weten