Heim  >  Artikel  >  Datenbank  >  MySQL-Datengruppierung: Filtergruppierung

MySQL-Datengruppierung: Filtergruppierung

巴扎黑
巴扎黑Original
2017-05-09 13:48:022250Durchsuche

MySQL-Filtergruppierung

Zusätzlich zum Gruppieren von Daten nach Gruppen ermöglicht MySQL auch das Filtern von Gruppen und gibt an, welche Gruppen eingeschlossen und welche ausgeschlossen sind. Beispielsweise möchten Sie möglicherweise alle Kunden auflisten, die mindestens zwei Bestellungen haben. Um diese Daten abzuleiten, muss die Filterung auf der Grundlage vollständiger Gruppen und nicht auf der Grundlage von Einzelpersonen erfolgen.

Wir haben die Rolle der Where-Klausel gesehen. Allerdings erfüllt „where“ die Aufgabe in diesem Beispiel nicht, da der „Where“-Filter Zeilen statt Gruppen angibt. Tatsächlich gibt es dort kein Gruppierungskonzept.

Was also statt wo verwenden? MySQL stellt zu diesem Zweck eine weitere Klausel bereit, nämlich die have-Klausel. haben ist sehr ähnlich zu wo. Tatsächlich können alle Arten von where-Klauseln, die Sie bisher gelernt haben, durch have ersetzt werden. Der einzige Unterschied besteht darin, wo Filterzeilen und Filtergruppen vorhanden sind.

Hinweis : Mit unterstützt alle Wo-Betreiber.

Also, wie filtert man Gruppen? Schauen Sie sich bitte das folgende Beispiel an:

Eingabe:

select cust_id,count(*) as orders from orders group by cust_id having count(*) >= 2;

Ausgabe:

MySQL-Datengruppierung: Filtergruppierung

Analyse: Diese Select-Anweisung Die ersten drei Zeilen ähneln den obigen Aussagen. Die letzte Zeile fügt eine Have-Klausel hinzu, die diese Gruppen mit count(*>)>=2 (mehr als zwei Bestellungen) filtert.

Wie Sie sehen, funktioniert die where-Klausel hier nicht, da die Filterung auf dem gruppierten Aggregatwert und nicht auf dem spezifischen Zeilenwert basiert.

Der Unterschied zwischen haben und wo: Hier ist eine andere Möglichkeit zu verstehen, wo Filter vor der Datengruppierung und Filter nach der Datengruppierung vorhanden sind. Dies ist ein wichtiger Unterschied. Zeilen, die durch where ausgeschlossen wurden, werden nicht in die Gruppierung einbezogen. Dies kann die berechneten Werte ändern und sich dadurch auf die Gruppierungen in der Have-Klausel auswirken, die auf Grundlage dieser Werte herausgefiltert werden.

Besteht also eine Notwendigkeit, in einer Anweisung sowohl where- als auch have-Klauseln zu verwenden? Tatsächlich gibt es das. Angenommen, Sie möchten die obige Aussage weiter filtern, sodass sie in den letzten 12 Monaten mehr als zwei Kunden zurückgibt. Um dies zu erreichen, können Sie eine Where-Klausel hinzufügen, um Bestellungen herauszufiltern, die innerhalb von 12 Monaten aufgegeben wurden. Fügen Sie dann die Have-Klausel hinzu, um Gruppen mit mehr als zwei Ordnungen herauszufiltern.

Zum besseren Verständnis sehen Sie sich bitte das folgende Beispiel an, in dem Produktlieferanten mit 2 (inklusive) oder mehr und einem Preis von 10 (inklusive) oder mehr aufgeführt sind:

Geben Sie ein:

select vend_id,count(*) as num_prods from products where prod_price >= 10 group by vend_id having count(*) >=2;

Ausgabe:

MySQL-Datengruppierung: Filtergruppierung

Analyse: In dieser Anweisung ist die erste Zeile das grundlegende SELECT unter Verwendung einer Aggregatfunktion, die sich von der vorherigen unterscheidet Die Beispiele oben sind sehr ähnlich. Die WHERE-Klausel filtert alle Zeilen, in denen prod_price mindestens 10 ist. Die Daten werden dann nach vend_id gruppiert und die HAVING-Klausel filtert Gruppierungen mit einer Anzahl von 2 oder mehr.

Wenn keine WHERE-Klausel vorhanden ist, werden zwei weitere Zeilen abgerufen (Lieferant 1002, alle verkauften Produkte haben einen Preis unter 10; Lieferant 1001, verkauft 3 Produkte, aber es gibt nur ein Produkt dessen Preis größer als oder gleich 10 ist):

Eingabe: Wählen Sie vend_id,count(*) als num_prods aus der Produktgruppe nach vend_id mit count(*) >= aus 2;

Ausgabe:

MySQL-Datengruppierung: Filtergruppierung

[Verwandte Empfehlungen]

  1. MySQL-Datengruppierung und -sortierung und Reihenfolge der SELECT-Klausel

  2. MySQL-Datengruppierung: Gruppierung erstellen

Das obige ist der detaillierte Inhalt vonMySQL-Datengruppierung: Filtergruppierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn