Bevor wir die GROUP BY- und HAVING-Klauseln vorstellen, müssen wir zunächst über eine spezielle Funktion in der SQL-Sprache sprechen: Aggregatfunktionen. Zum Beispiel SUM, COUNT, MAX, AVG usw. Der grundlegende Unterschied zwischen diesen Funktionen und anderen Funktionen besteht darin, dass sie im Allgemeinen auf mehrere Datensätze einwirken. Wählen Sie SUM (Bevölkerung) aus BBC Die SUMME wird hier auf das Bevölkerungsfeld aller zurückgegebenen Datensätze angewendet, sodass die Abfrage nur ein Ergebnis zurückgibt, nämlich die Gesamtbevölkerung aller Länder. Having ist die Screening-Bedingung nach der Gruppierung (group by), und die gruppierten Daten werden innerhalb der Gruppe weiter gescreent Mithilfe der GROUP BY-Klausel können Sie Funktionen wie SUM und COUNT auf Daten anwenden, die zu einer Gruppe gehören. Wenn Sie GROUP BY Region angeben, gibt eine Gruppe von Daten, die zur selben Region gehören, nur eine Wertezeile zurück. Das bedeutet, dass alle Felder in der Tabelle außer „Region“ erst dann einen Wert zurückgeben können, wenn sie durch Aggregatfunktionen wie SUM und COUNT berechnet wurden. Mit der HAVING-Klausel können wir die Datengruppen filtern. Die WHERE-Klausel filtert die Datensätze vor der Aggregation. Das heißt, es funktioniert vor der GROUP BY-Klausel und der HAVING-Klausel. Die HAVING-Klausel filtert die Gruppendatensätze nach der Aggregation. Lassen Sie uns die GROUP BY- und HAVING-Klauseln anhand konkreter Beispiele verstehen und die in Abschnitt 3 vorgestellte BBC-Tabelle verwenden. SQL-Beispiel: 1. Zeigen Sie die Gesamtbevölkerung und die Gesamtfläche jeder Region an. SELECT Region, SUM(Bevölkerung), SUM(Fläche) VON BBC GROUP BY-Region Verwenden Sie zunächst „Region“, um die zurückgegebenen Datensätze in mehrere Gruppen aufzuteilen. Dies ist die wörtliche Bedeutung von GROUP BY. Nachdem die Gruppen gebildet wurden, werden Aggregatfunktionen verwendet, um verschiedene Felder in jeder Gruppe (ein oder mehrere Datensätze) zu bearbeiten. 2. Zeigen Sie die Gesamtbevölkerung und die Gesamtfläche jeder Region an. Es werden nur Regionen mit einer Fläche von über 1.000.000 angezeigt. SELECT Region, SUM(Bevölkerung), SUM(Fläche) VON bbc8 F4 w2 v( P- f GROUP BY-Region HAVING SUM(Bereich)>1000000# Hier können wir „where“ nicht verwenden, um Regionen mit mehr als 1.000.000 zu filtern, da ein solcher Datensatz in der Tabelle nicht vorhanden ist. 3. Abfrage der Anzahl der Bestellungen für Benutzer in den Tabellen KUNDE und BESTELLUNG Wählen Sie c.name, Anzahl (Bestellnummer) als Anzahl der Bestellungen o, Kunde c, wobei c.id = o.Kunden-ID, gruppieren Sie nach Kunden-ID; +--------+-------+ | Name | Anzahl | +--------+-------+ | d | 9 | | cc | 6 | | Bodhisamen | 1 | | cccccc | 2 | +--------+-------+ HAVING-Filter hinzufügen Wählen Sie c.name, Anzahl(Bestellnummer) als Anzahl der Bestellungen o, Kunde c, wobei c.id=o.Kunden-ID, gruppieren Sie nach Kunden-ID mit Anzahl(Bestellnummer)>5; +------+--------+ | Name | Anzahl | +------+--------+ | d | 9 | | cc | 6 | +------+--------+ 4. Ich werde noch einige Beispiele geben SQL> wähle * aus sc; SNO PNO-GRAD ---------- ----- ---------- 1. Jahr 95 1 SX 98 1 JJ 90 2. Jahr 89 2 SX 91 2 JJ 92 3. Jahr 85 3 SX 88 3 JJ 96 4. Jahr 95 4 SX 89 SNO PNO-GRAD ---------- ----- ---------- 4 JJ 88 Diese Tabelle beschreibt die Aufzeichnungen der akademischen Leistungen von 4 Studenten in jedem Fach, einschließlich SNO (Matrikelnummer), PNO (Kursname) und GRADE (Note). 1. Zeigen Sie die Kursnamen und Noten von Studenten mit Noten über 90 an //Dies ist eine einfache Abfrage und verwendet keine Gruppierungsabfrage SQL> wähle sno, pno, grade aus sc, wobei grade>=90; SNO PNO-GRAD ---------- ----- ---------- 1. Jahr 95 1 SX 98 1 JJ 90 2 SX 91 2 JJ 92 3 JJ 96 4. Jahr 95 7 Zeilen ausgewählt. 2. Zeigen Sie die Anzahl der Fächer an, in denen die Punktzahl jedes Schülers über 90 Punkte liegt //In Gruppen anzeigen und gemäß der Where-Bedingung zählen SQL> select sno,count(*) from sc where grade>=90 group by sno; SNO-ANZAHL(*) ---------- ---------- 1 3 zweiundzwanzig 4 1 3 1 3. Wir haben die Having-Anweisung hier nicht verwendet. Wenn wir als nächstes drei gute Studenten auswählen möchten, ist die Bedingung, dass mindestens zwei Kurse über 90 Punkte liegen, um infrage zu kommen. Listen Sie die Anzahl der infrage kommenden Studenten und die Anzahl der Kurse über 90 Punkte auf. // In Gruppen anzeigen, gemäß der Where-Bedingung zählen und die Gruppen gemäß der Having-Klausel filtern SQL> select sno,count(*) from sc where grade>=90 group by sno having count(*)>=2; SNO-ANZAHL(*) ---------- ---------- 1 3 zweiundzwanzig Dieses Ergebnis ist das, was wir wollen. Es listet die Studentennummern auf, die für die Auszeichnung „Drei gute Studenten“ in Frage kommen. Im Vergleich zum vorherigen Beispiel können wir sehen, dass dies eine Unterabfrage ist, die nach der Gruppierung ausgeführt wird. 4. Die Schule wählt fortgeschrittene Schüler aus. Schüler mit einem Durchschnittsergebnis von mehr als 90 Punkten sind teilnahmeberechtigt und die Punktzahl im Chinesischkurs muss über 95 Punkte liegen. Bitte listen Sie die teilnahmeberechtigten Schüler auf. //Tatsächlich extrahiert diese Abfrage zuerst die Nummern der Studenten, deren Chinesisch-Punktzahl über 95 liegt, berechnet dann den Durchschnitt und wählt dann nach der Gruppierung gemäß der Having-Anweisung die Studenten aus, deren Durchschnittspunktzahl über 90 liegt. SQL> select sno,avg(grade) from sc where SNO IN (SELECT SNO FROM SC WHERE GRADE>=95 AND PNO='YW') group by sno having avg(grade)>=90; SNO-Durchschnitt (Note) ---------- ---------- 1 94,3333333 4 90,6666667 5. Abfrage des Studierendenausweises und der Durchschnittsnote von Studierenden, deren Durchschnittsnote mindestens höher ist als die Durchschnittsnote des Studierendenausweises 3 //Vergleiche und Unterabfragen können in der Having-Klausel durchgeführt werden SQL> select sno,avg(grade) from sc Gruppe nach sno mit Durchschnitt(Note) > (wählen Sie Durchschnitt(Note) aus sc, wobei sno=3); Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
Da die Anwendung von CentOS auf der Serverseite i...
So zeigen Sie Versionsinformationen unter Linux a...
Ich bin heute auf dieses Problem gestoßen. Ich hab...
Der Link-In-Stil besteht darin, alle Stile in ein...
Wirkungsdiagramm: Gesamtwirkung: Video wird gelad...
Dieser Artikel veranschaulicht anhand von Beispie...
Vor CSS3 konnten Verlaufsbilder nur als Hintergru...
Herzattribute opacity: .999 erstellt einen Stapel...
1. Grund der Sperrung Es gibt viele Gründe, warum...
Inhaltsverzeichnis 1. Verwenden Sie Objekt, um ei...
[ Linux-Installation von Tomcat8 ] Tomcat deinsta...
Klicken Sie hier, um zum Abschnitt „HTML-Tutorial“...
Inhaltsverzeichnis Allgemeine Versionseinführung ...
MySQL Zeile zu Spalte, Spalte zu Zeile Der Satz i...
Inhaltsverzeichnis 1. So funktioniert das Bootstr...