Wie Verwenden von GROUP BY, HAVING und ORDER BY SQL-Klauseln

SQL gibt Ihnen Optionen für das Abrufen, Analysieren und Anzeigen von Informationen, die Sie mit der GROUP BY müssen, HAVING und ORDER BY-Klauseln. Hier sind einige Beispiele, wie Sie sie verwenden können.

Menu

GROUP BY-Klauseln

Manchmal, anstatt einzelne Datensätze abrufen, wollen Sie etwas über eine Gruppe von Datensätzen zu kennen. Das GRUPPIERE NACH Klausel ist das Werkzeug, die Sie benötigen.

Angenommen, Sie der Vertriebsleiter von einem anderen Ort sind, und Sie wollen an die Leistung Ihrer Vertriebsmitarbeiter zu suchen. Wenn Sie eine einfache tun WÄHLEN, wie die folgende Abfrage:

bild0.jpg
SELECT InvoiceNo, Verkaufsdatum, Handelsvertreter, TotalSaleFROM SALES-

Dieses Ergebnis gibt Ihnen eine Vorstellung davon, wie gut Ihre Verkäufer tun, weil so wenige Gesamtumsatz beteiligt sind. Doch im wirklichen Leben, würde ein Unternehmen viele mehr Umsatz haben - und es wäre nicht so leicht zu sagen, ob Verkaufsziele erreicht wurden.

Um die wirkliche Analyse tun, können Sie den Mähdrescher GRUPPIERE NACH Klausel mit einer der Aggregat Funktionen (auch bekannt als Set-Funktionen) Ein quantitatives Bild der Umsatzentwicklung zu erhalten. Zum Beispiel können Sie sehen, welche Verkäufer ist mehr der profitable High-Ticket-Artikel verkaufen, indem die durchschnittliche Verwendung (AVG) Funktion wie folgt:

SELECT Händler, AVG (TotalSale) FROM Verkaeufer BY Salesperson-

Ausführen der Abfrage mit einer anderen Datenbank-Management-System würde das gleiche Ergebnis, abrufen, aber vielleicht ein wenig anders aussehen.

image1.jpg

Der durchschnittliche Wert von Bennett Umsatz ist deutlich höher als die der beiden anderen Verkäufer. Sie vergleichen Gesamtumsatz mit einer ähnlichen Abfrage:

image2.jpg
SELECT Händler, SUM (TotalSale) FROM Verkaeufer BY Salesperson-

Bennett hat auch den höchsten Gesamtumsatz, der mit mit den höchsten durchschnittlichen Umsatz konsistent ist.

HAVING-Klauseln

Sie können die gruppierten Daten weiter analysieren die durch die Verwendung MIT Klausel. Das MIT Klausel ist ein Filter, der auf eine ähnliche wirkt WOHER Klausel, sondern auf Gruppen von Zeilen und nicht auf einzelne Zeilen. Veranschaulichen die Funktion der MIT Klausel an, dass der Verkaufsleiter Bennett hält, indem er sich in einer Klasse zu sein.

Seine Leistung verzerrt die Gesamtdaten für die anderen Verkäufer. (Aha - a. Kurve-Abschleppwagen) Sie können Bennett Umsatz aus den gruppierten Daten ausschließen, indem ein mit MIT Klausel wie folgt:

SELECT Händler, SUM (TotalSale) FROM Verkaeufer BY SalespersonHAVING Verkäufer lt;> 'Bennett'-

Nur Zeilen, in denen der Verkäufer nicht Bennett ist berücksichtigt.

image3.jpg

ORDER BY-Klauseln

Verwenden Sie die SORTIEREN NACH Klausel die Ausgabetabelle in entweder aufsteigend einer Abfrage anzuzeigen oder Absteigen der alphabetischen Reihenfolge. Während die GRUPPIERE NACH Klausel sammelt Reihen in Gruppen auf und sortiert die Gruppen in alphabetischer Reihenfolge, SORTIEREN NACH sortiert einzelne Zeilen. Das SORTIEREN NACH Klausel muss die letzte Klausel sein, die Sie in einer Abfrage angeben.

Wenn die Abfrage enthält auch eine GRUPPIERE NACH Klausel, ordnet die Klausel zunächst die Ausgabezeilen in Gruppen. Das SORTIEREN NACH Klausel dann werden die Zeilen in jeder Gruppe. Wenn Sie keine GRUPPIERE NACH Klausel, dann hält die Anweisung die gesamte Tabelle als Gruppe, und die SORTIEREN NACH Klausel sortiert alle Zeilen nach der Spalte (oder Spalten), dass die SORTIEREN NACH Klausel gibt.

Um diesen Punkt zu veranschaulichen, die Daten in der Tabelle SALES berücksichtigen. Die Tabelle SALES enthält Spalten für InvoiceNo, Verkaufsdatum, Verkäufer, und TotalSale. Wenn Sie das folgende Beispiel verwenden, sehen Sie alle Daten in der Tabelle SALES - aber in einer beliebigen Reihenfolge:

SELECT * FROM SALES -

In einer Implementierung kann dies die Reihenfolge, in der Sie die Zeilen in der Tabellen- in einer anderen Ausführung eingesetzt wird, kann die Reihenfolge, in der neuesten Updates sein. Die Bestellung kann auch unerwartet ändern, wenn jemand körperlich die Datenbank reorganisiert. Das ist ein Grund, warum es in der Regel eine gute Idee, die Reihenfolge, in der die Zeilen festgelegt werden soll.

Sie können zum Beispiel wollen die Zeilen, um durch das zu sehen Verkaufsdatum so was:

SELECT * FROM SALES ORDER BY Verkaufsdatum -

In diesem Beispiel werden alle Zeilen in der Tabelle SALES, um durch Verkaufsdatum.

Für Zeilen mit demselben Verkaufsdatum, die Standardreihenfolge hängt von der Implementierung. Sie können, geben Sie jedoch, wie die Zeilen zu sortieren, die den gleichen Anteil Verkaufsdatum. Sie können die Verkäufe für jeden zu sehen Verkaufsdatum um durch InvoiceNo, wie folgt:

SELECT * FROM SALES ORDER BY Verkaufsdatum, InvoiceNo -

Dieses Beispiel ordnet zuerst die Verkäufe von Verkaufsdatum- dann für jeden Verkaufsdatum, es ordnet die Verkäufe von InvoiceNo. Aber nicht zu verwechseln dieses Beispiel mit der folgenden Abfrage:

SELECT * FROM SALES ORDER BY InvoiceNo, Verkaufsdatum -

Diese Abfrage werden zuerst die Verkäufe von INVOICE_NO. Dann für jede unterschiedliche InvoiceNo, die Abfrage werden die Verkäufe von Verkaufsdatum. Dies wird wahrscheinlich das gewünschte Ergebnis nicht nachgeben, weil es unwahrscheinlich ist, dass mehrere Verkaufsdaten für eine einzelne Rechnungsnummer existiert.

Die folgende Abfrage ist ein weiteres Beispiel dafür, wie SQL-Daten zurückgeben kann:

SELECT * FROM SALES ORDER BY Verkäufer, Verkaufsdatum -

Dieses Beispiel erste Aufträge von Verkäufer und dann Verkaufsdatum. Wenn Sie sich bei den Daten in dieser Reihenfolge suchen, können Sie es zu invertieren, wie folgt:

SELECT * FROM SALES ORDER BY Verkaufsdatum, Verkäufer -

Dieses Beispiel ordnet die Reihen zuerst Verkaufsdatum und dann Verkäufer.

Alle diese Bestellung Beispiele sind in aufsteigender (ASC) Um, die die Standardsortierreihenfolge ist. Das Letzte WÄHLEN früheren Verkäufen zeigt erste - und innerhalb von einem bestimmten Zeitpunkt, zeigt die Verkäufe für 'Adams' Vor 'Bäcker'. Wenn Sie es vorziehen absteigend (DESC) Bestellen, können Sie diesen Auftrag für eine oder mehrere der Reihenfolge Spalten angeben, wie folgt:

SELECT * FROM Salesorder BY Verkaufsdatum DESC, Verkäufer ASC -

In diesem Beispiel wird zum Verkauf Termine absteigend, die neueren Umsatz zeigt erste und eine aufsteigende Reihenfolge für Verkäufer, sie in alphabetischer Ordnung zu bringen. Das sollte Ihnen ein besseres Bild davon, wie Bennett Leistung stapelt gegen die der anderen Verkäufer auf.

Menü