Zusammenfassung: In diesem Tutorial lernen Sie, wie Sie die MySQL HAVING-Klausel verwenden, um eine Filterbedingung für Gruppen von Zeilen oder Aggregaten anzugeben.

Einführung in die MySQL HAVING-Klausel

Die HAVING-Klausel wird in der SELECT-Anweisung verwendet, um Filterbedingungen für eine Gruppe von Zeilen oder Aggregaten anzugeben.

Die HAVING-Klausel wird oft zusammen mit der GROUP BY-Klausel verwendet, um Gruppen anhand einer bestimmten Bedingung zu filtern. Wenn die GROUP BY Klausel weggelassen wird, verhält sich die HAVING Klausel wie die WHERE Klausel.

Im Folgenden wird die Syntax der HAVING-Klausel erläutert:

SELECT select_listFROM table_nameWHERE search_conditionGROUP BY group_by_expressionHAVING group_condition;
Code language: SQL (Structured Query Language) (sql)

In dieser Syntax geben Sie in der HAVING-Klausel eine Bedingung an. Wenn eine Zeile, die durch die group by-Klausel erzeugt wird, dazu führt, dass die group_condition-Klausel als wahr ausgewertet wird, wird die Abfrage sie in die Ergebnismenge aufnehmen.

Beachten Sie, dass die HAVING-Klausel eine Filterbedingung auf jede Gruppe von Zeilen anwendet, während die WHERE-Klausel die Filterbedingung auf jede einzelne Zeile anwendet.

MySQL wertet die HAVING-Klausel nach der FROMWHERE aus, SELECT und GROUP BY Klauseln und vor ORDER BY und LIMIT Klauseln.

Beachten Sie, dass der SQL-Standard festlegt, dass das HAVING vor der SELECT Klausel und nach der GROUP BY Klausel ausgewertet wird.

MySQL HAVING-Klausel Beispiele

Lassen Sie uns einige Beispiele zur Verwendung der HAVING-Klausel nehmen, um zu sehen, wie sie funktioniert. Für die Demonstration verwenden wir die Tabelle orderdetails in der Beispieldatenbank.

Im Folgenden wird die GROUP BY-Klausel verwendet, um Bestellnummern zu erhalten, die Anzahl der verkauften Artikel pro Bestellung und den Gesamtumsatz für jeden aus der Tabelle orderdetails:

SELECT ordernumber, SUM(quantityOrdered) AS itemsCount, SUM(priceeach*quantityOrdered) AS totalFROM orderdetailsGROUP BY ordernumber;
Code language: SQL (Structured Query Language) (sql)

Ausprobieren

Nun, können Sie herausfinden, welcher Auftrag einen Gesamtumsatz größer als 1000 hat, indem Sie die HAVING-Klausel wie folgt verwenden:

SELECT ordernumber, SUM(quantityOrdered) AS itemsCount, SUM(priceeach*quantityOrdered) AS totalFROM orderdetailsGROUP BY ordernumberHAVING total > 1000;
Code language: SQL (Structured Query Language) (sql)

Ausprobieren

Sie können eine komplexe Bedingung in der HAVING-Klausel mit logischen Operatoren wie OR und AND.

Das folgende Beispiel verwendet die HAVING-Klausel, um Bestellungen zu finden, deren Gesamtbetrag größer als 1000 ist und die mehr als 600 Artikel enthalten:

SELECT ordernumber, SUM(quantityOrdered) AS itemsCount, SUM(priceeach*quantityOrdered) AS totalFROM orderdetailsGROUP BY ordernumberHAVING total > 1000 AND itemsCount > 600;
Code language: SQL (Structured Query Language) (sql)

Ausprobieren

Angenommen, Sie möchten alle Bestellungen finden, die sich im Versandstatus befinden und deren Gesamtbetrag größer als 1500 ist, können Sie die Tabelle orderdetails mit der Tabelle orders unter Verwendung der Klausel INNER JOIN verbinden und eine Bedingung auf die Spalte status und das Aggregat total anwenden, wie in der folgenden Abfrage gezeigt:

SELECT a.ordernumber, status, SUM(priceeach*quantityOrdered) totalFROM orderdetails aINNER JOIN orders b ON b.ordernumber = a.ordernumberGROUP BY ordernumber, statusHAVING status = 'Shipped' AND total > 1500;
Code language: SQL (Structured Query Language) (sql)

Ausprobieren

Die HAVING-Klausel ist nur sinnvoll, wenn Sie sie zusammen mit der GROUP BY-Klausel verwenden, um die Ausgabe der HighLevel-Berichte. Beispielsweise können Sie die HAVING-Klausel verwenden, um Fragen zu beantworten, wie die Anzahl der Aufträge in diesem Monat, in diesem Quartal oder in diesem Jahr, deren Gesamtumsatz größer als 10.000 ist.

In diesem Lernprogramm haben Sie gelernt, wie Sie die MySQL HAVING-Klausel mit der GROUP BY-Klausel verwenden, um Filterbedingungen für Gruppen von Zeilen oder Aggregate anzugeben.

  • War dieses Lernprogramm hilfreich?
  • JaNein

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.