HAVING-Klausel in SQL-Aggregatfunktionen

HAVING-Klausel in SQL-Aggregatfunktionen

In diesem Tutorial besprechen wir einige Möglichkeiten, wie wir die HAVING-Klausel in SQL-Aggregatfunktionen verwenden oder ausführen können . Die Verwendung dieser Klausel in SQL-Aggregatfunktionen kann bei der Datenzusammenfassung sehr hilfreich sein.

Die HAVING- Klausel ähnelt fast der WHERE- Anweisung und kann auch zusammen mit dieser ausgeführt werden.

Wir werden ihre Korrelationen und Unterschiede anhand von Beispielen diskutieren, während wir dieses Tutorial durcharbeiten.

Inhaltsverzeichnis

GROUP BY- und WHERE-Anweisungen in SQL

In unserem ersten Beispiel besprechen wir anhand der folgenden Beispieltabelle , wie die WHERE-Klausel und GROUP BY ausgeführt werden. Bitte beachten Sie, dass wir die WHERE- Klausel nur mit vorhandenen Spalten und nicht allein in Aggregatfunktionen verwenden können .

HAVING-Klausel in SQL-Aggregatfunktionen

Nehmen wir an, wir möchten den Gesamtumsatz eines Produkts basierend auf der Spalte „SaleAmount“ ermitteln , in der der Wert größer als 2 ist . Um das Ergebnis zu erhalten, sollte unser Befehl wie folgt lauten:

HAVING-Klausel in SQL-Aggregatfunktionen

Zuerst wählen wir den ProductName aus und aggregieren den SaleAmount , um den TotalSales zu erhalten. 

HAVING-Klausel in SQL-Aggregatfunktionen

Dann haben wir hier die WHERE- Anweisung verwendet, da wir versuchen, nur die Produkte abzurufen, bei denen der SaleAmount größer als 2 ist . Der Befehl „GROUP BY ProductName“ gibt an, dass Zeilen unter der Spalte „ ProductName“ zu einer zusammengefasst werden.

Wenn wir unseren Befehlssatz ausführen, werden wir sehen, dass von allen Daten in den Spalten ProductName und SaleAmount nurBirne “ und „ Fan“ angezeigt wurden. Das liegt daran, dass sie die einzigen waren, deren SaleAmount größer als 2 war.

HAVING-Klausel in SQL-Aggregatfunktionen

In diesem Beispiel dient die WHERE- Anweisung zum Filtern von Ergebnissen mit einer vorhandenen Spalte, bei der es sich um unseren SaleAmount handelt . Beachten Sie außerdem, dass die WHERE- Anweisung vor GROUP BY steht und nicht zum Filtern von Aggregatfunktionen verwendet werden kann. Andererseits erscheint die HAVING- Klausel nach GROUP BY und wird zum Filtern basierend auf einer Aggregatfunktion verwendet. 

GROUP BY- und HAVING-Klausel in SQL

In diesem Beispiel werden wir den Unterschied zwischen der WHERE- Anweisung und der HAVING- Klausel demonstrieren. Wir verwenden dasselbe Ziel wie im vorherigen Beispiel, damit wir die Ergebnisse vergleichen und bewerten können. 

Lassen Sie uns zunächst mit dem folgenden Befehl Produkte mit ihrem Gesamtumsatz anzeigen. Wie Sie sehen können, ist unser erster Befehl immer noch derselbe wie unser erster Befehl, der die WHERE- Anweisung ausführt.

HAVING-Klausel in SQL-Aggregatfunktionen

Wenn wir unsere ersten beiden Befehle ausführen, erhalten wir das folgende Ergebnis:

HAVING-Klausel in SQL-Aggregatfunktionen

Angenommen, wir möchten nur Produkte anzeigen, deren Gesamtverkaufswert mehr als 5 beträgt. Wir können die WHERE-  Anweisung nicht verwenden, da sie nur mit vorhandenen Spalten verwendet werden kann. Daher müssen wir die HAVING- Klausel verwenden, da wir aus einer Aggregatfunktion filtern. 

HAVING-Klausel in SQL-Aggregatfunktionen

Beachten Sie, dass wir die HAVING- Klausel nach GROUP BY verwenden, im Gegensatz zur WHERE- Anweisung, die vor GROUP BY verwendet wird . Dies liegt daran, dass SQL Datensätze gruppiert, bevor es die HAVING- Klausel auswertet. 

Führen wir diese Befehle dann zusammen mit HAVING SUM(SaleAmount)>5 aus . Nachdem wir angegeben haben, dass wir nur die Produkte erhalten möchten, deren Gesamtpreis größer als 5 ist, werden wir feststellen, dass wir in unserer aktuellen Ergebnistabelle den Stift nicht mehr sehen. Das liegt daran, dass die Summe weniger als 5 beträgt . 

HAVING-Klausel in SQL-Aggregatfunktionen

Kurz gesagt: Wenn wir Daten aus unserer Tabelle basierend auf einer vorhandenen Spalte filtern möchten, verwenden wir die WHERE-Klausel , während wir die HAVING-Klausel verwenden, wenn wir Daten aus einer Aggregatfunktion filtern möchten . 

HAVING- und WHERE-Klausel in SQL Server Management Studio (SSMS)

Jetzt gehen wir weiter und diskutieren und demonstrieren, wie wir die HAVING-Klausel in SQL Server Management Studio (SSMS) ausführen können. Wir werden uns auch mit dem Unterschied zwischen der HAVING-Klausel und der WHERE-Klausel befassen , indem wir Beispiele bereitstellen.

Unten sehen Sie unsere Beispieldaten SalesOrderHeader. Diese Daten bestehen aus 100 Zeilen. In unserem Beispiel möchten wir TotalSale nach CustomerID abrufen , wobei TotalSale größer als 10000 ist . Beachten Sie, dass der Gesamtverkauf auf der Summe der Werte der Spalte „TotalDue“ basiert .

HAVING-Klausel in SQL-Aggregatfunktionen

Lassen Sie mich zunächst anhand unseres obigen Beispiels  zeigen, warum wir die WHERE-Klausel nicht verwenden können, wenn wir nach einer Aggregatfunktion filtern möchten.

Wir verwenden den Beispielbefehlssatz aus dem Bild unten. Wie Sie sehen, verfügen wir technisch gesehen über denselben Befehlssatz wie in unserem allerersten Beispiel.

Wenn wir jedoch oben links auf „Ausführen“ klicken, wird ein Fehler angezeigt, da wir die WHERE- Klausel nicht allein verwenden können, wenn wir nach der Aggregatfunktion filtern.

HAVING-Klausel in SQL-Aggregatfunktionen

Um den Fehler zu beheben, müssen wir das Ergebnis mithilfe der HAVING- Klausel anstelle der WHERE- Klausel filtern. Unser neuer Befehlssatz sollte dem Bild unten ähneln.

HAVING-Klausel in SQL-Aggregatfunktionen

Jetzt können wir sehen, dass unser Fehler korrigiert wurde und die Ergebnisse pro CustomerID mit einem TotalSale größer als 10000 enthält .

Auch hier wird die WHERE-Klausel immer vor der GROUP BY-Klausel verwendet , während die HAVING-Klausel immer nach einer GROUP BY-Klausel verwendet wird .

Verwendung sowohl der HAVING-Klausel als auch der WHERE-Klausel in SQL  

Nehmen wir für dieses Beispiel an, wir möchten die WHERE- und HAVING-Klausel gleichzeitig verwenden . Versuchen wir, den TotalSale nach CustomerID zu ermitteln , wobei TotalSale größer als 10000 ist , aber nur mit Kunden, deren TerritoryID gleich 1 ist . 

Da wir Ergebnisse mit Kunden filtern möchten, deren TerritoryID 1 ist , verwenden wir die WHERE-Klausel. Unser Befehl sollte also derselbe sein wie unser vorheriger. Auch hier haben wir vor der GROUP BY-Klausel eine WHERE-Klausel eingefügt .

HAVING-Klausel in SQL-Aggregatfunktionen

Im Moment können wir keinen großen Unterschied zwischen unserem vorherigen und diesem neuen Ergebnis erkennen. Wenn Sie sich jedoch die untere rechte Ecke genau ansehen, haben wir jetzt nur noch 64 Zeilen im Vergleich zum vorherigen mit 505 Datenzeilen. Das liegt daran, dass die Ergebnisse auch nach ihrer TerritoryID gefiltert werden.

Abschluss

Zusammenfassend lässt sich sagen, dass wir die WHERE- Klausel nur mit vorhandenen Spalten verwenden können. Wenn wir mit aggregierten Funktionen filtern müssen, müssen wir stattdessen die HAVING- Klausel verwenden .

Die Verwendung der HAVING- Klausel in SQL-Aggregatfunktionen und das Üben der gemeinsamen Ausführung der HAVING- Klausel und der WHERE -Klausel können Benutzern bei der Arbeit an einer großen Anzahl von Daten oder Datensätzen mehr Komfort bieten. 

Ich hoffe, ich habe Ihnen genügend Informationen und Verständnis für die Verwendung der HAVING- Klausel in SQL-Aggregatfunktionen vermittelt. Wenn Sie mehr über dieses Thema und andere verwandte Inhalte erfahren möchten, können Sie sich die Liste der relevanten Links unten ansehen.

Alles Gute,

Hafiz


So speichern und laden Sie eine RDS-Datei in R

So speichern und laden Sie eine RDS-Datei in R

Sie erfahren, wie Sie Objekte aus einer .rds-Datei in R speichern und laden. In diesem Blog wird auch behandelt, wie Sie Objekte aus R in LuckyTemplates importieren.

Was ist Self in Python: Beispiele aus der Praxis

Was ist Self in Python: Beispiele aus der Praxis

Was ist Self in Python: Beispiele aus der Praxis

First N Business Days Revisited – Eine DAX-Codierungssprachenlösung

First N Business Days Revisited – Eine DAX-Codierungssprachenlösung

In diesem Tutorial zur DAX-Codierungssprache erfahren Sie, wie Sie die GENERATE-Funktion verwenden und einen Kennzahltitel dynamisch ändern.

Präsentieren Sie Einblicke mithilfe der Multi-Threaded-Dynamic-Visuals-Technik in LuckyTemplates

Präsentieren Sie Einblicke mithilfe der Multi-Threaded-Dynamic-Visuals-Technik in LuckyTemplates

In diesem Tutorial erfahren Sie, wie Sie mithilfe der Multi-Threaded-Dynamic-Visuals-Technik Erkenntnisse aus dynamischen Datenvisualisierungen in Ihren Berichten gewinnen.

Einführung in den Filterkontext in LuckyTemplates

Einführung in den Filterkontext in LuckyTemplates

In diesem Artikel werde ich den Filterkontext durchgehen. Der Filterkontext ist eines der Hauptthemen, über die sich jeder LuckyTemplates-Benutzer zunächst informieren sollte.

Beste Tipps zur Verwendung der Apps im LuckyTemplates-Onlinedienst

Beste Tipps zur Verwendung der Apps im LuckyTemplates-Onlinedienst

Ich möchte zeigen, wie der LuckyTemplates Apps-Onlinedienst bei der Verwaltung verschiedener Berichte und Erkenntnisse aus verschiedenen Quellen helfen kann.

Analysieren Sie Gewinnmargenänderungen im Laufe der Zeit – Analysen mit LuckyTemplates und DAX

Analysieren Sie Gewinnmargenänderungen im Laufe der Zeit – Analysen mit LuckyTemplates und DAX

Erfahren Sie, wie Sie Ihre Gewinnmargenänderungen mithilfe von Techniken wie Kennzahlenverzweigung und der Kombination von DAX-Formeln in LuckyTemplates ermitteln.

Materialisierungsideen für Datencaches in DAX Studio

Materialisierungsideen für Datencaches in DAX Studio

In diesem Tutorial werden die Ideen der Materialisierung von Datencaches und deren Auswirkungen auf die Leistung von DAXs bei der Bereitstellung von Ergebnissen erläutert.

Geschäftsberichte mit LuckyTemplates

Geschäftsberichte mit LuckyTemplates

Wenn Sie bisher noch Excel verwenden, ist dies der beste Zeitpunkt, LuckyTemplates für Ihre Geschäftsberichtsanforderungen zu verwenden.

Was ist LuckyTemplates Gateway? Alles was du wissen musst

Was ist LuckyTemplates Gateway? Alles was du wissen musst

Was ist LuckyTemplates Gateway? Alles was du wissen musst