Antworten:
ORDER BY ändert die Reihenfolge, in der Artikel zurückgegeben werden.
GROUP BY aggregiert Datensätze nach den angegebenen Spalten, sodass Sie Aggregationsfunktionen für nicht gruppierte Spalten (wie SUM, COUNT, AVG usw.) ausführen können.
ORDER BY ändert die Reihenfolge, in der Artikel zurückgegeben werden.
GROUP BY aggregiert Datensätze nach den angegebenen Spalten, sodass Sie Aggregationsfunktionen für nicht gruppierte Spalten (wie SUM, COUNT, AVG usw.) ausführen können.
TABLE:
ID NAME
1 Peter
2 John
3 Greg
4 Peter
SELECT *
FROM TABLE
ORDER BY NAME
=
3 Greg
2 John
1 Peter
4 Peter
SELECT Count(ID), NAME
FROM TABLE
GROUP BY NAME
=
1 Greg
1 John
2 Peter
SELECT NAME
FROM TABLE
GROUP BY NAME
HAVING Count(ID) > 1
=
Peter
age
Spalte enthält, wobei Peters ein unterschiedliches Alter hat und die Abfrage SELECT NAME, AGE FROM TABLE GROUP BY NAME lautet?
ORDER BY: Sortieren Sie die Daten in aufsteigender oder absteigender Reihenfolge.
Betrachten Sie die Tabelle CUSTOMERS :
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
Das folgende Beispiel zeigt das Ergebnis in aufsteigender Reihenfolge nach NAME:
SQL> SELECT * FROM CUSTOMERS
ORDER BY NAME;
Dies würde das folgende Ergebnis erzeugen:
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
+----+----------+-----+-----------+----------+
GROUP BY: Ordnen Sie identische Daten in Gruppen an.
Die Tabelle CUSTOMERS enthält jetzt die folgenden Datensätze mit doppelten Namen:
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Ramesh | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | kaushik | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
Wenn Sie identische Namen zu einem einzigen Namen gruppieren möchten, lautet die GROUP BY-Abfrage wie folgt:
SQL> SELECT * FROM CUSTOMERS
GROUP BY NAME;
Dies würde das folgende Ergebnis ergeben: (Bei identischen Namen würde der letzte ausgewählt und schließlich die Spalte in aufsteigender Reihenfolge sortiert.)
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 4 | kaushik | 25 | Mumbai | 6500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
| 2 | Ramesh | 25 | Delhi | 1500.00 |
+----+----------+-----+-----------+----------+
wie Sie gefolgert haben, dass es ohne SQL-Funktionen wie sum, avg etc .. keinen Nutzen hat.
Gehen Sie diese Definition durch, um die ordnungsgemäße Verwendung von GROUP BY zu verstehen:
Eine GROUP BY-Klausel verarbeitet die von einer Abfrage zurückgegebenen Zeilen, indem identische Zeilen in einer einzelnen / eindeutigen Gruppe zusammengefasst werden, und gibt eine einzelne Zeile mit der Zusammenfassung für jede Gruppe zurück, indem die entsprechende Aggregatfunktion in der SELECT-Liste verwendet wird, z. B. COUNT (), SUM (), MIN (), MAX (), AVG () usw.
Wenn Sie nun den Gesamtlohn für jeden Kunden (Namen) wissen möchten, lautet die GROUP BY-Abfrage wie folgt:
SQL> SELECT NAME, SUM(SALARY) FROM CUSTOMERS
GROUP BY NAME;
Dies würde das folgende Ergebnis ergeben: (Summe der Gehälter mit identischen Namen und Sortieren der Spalte NAME nach Entfernen identischer Namen)
+---------+-------------+
| NAME | SUM(SALARY) |
+---------+-------------+
| Hardik | 8500.00 |
| kaushik | 8500.00 |
| Komal | 4500.00 |
| Muffy | 10000.00 |
| Ramesh | 3500.00 |
+---------+-------------+
Der Unterschied ist genau das, was der Name impliziert: Eine Gruppe nach führt eine Gruppierungsoperation aus und eine Reihenfolge nach Sortierung.
Wenn Sie dies tun SELECT * FROM Customers ORDER BY Name
, wird die Ergebnisliste nach dem Namen des Kunden sortiert.
Wenn Sie dies tun, erhalten SELECT IsActive, COUNT(*) FROM Customers GROUP BY IsActive
Sie eine Anzahl aktiver und inaktiver Kunden. Die Gruppe aggregierte die Ergebnisse basierend auf dem von Ihnen angegebenen Feld.
Sie haben eine völlig andere Bedeutung und sind überhaupt nicht wirklich verwandt.
Mit ORDER BY können Sie die Ergebnismenge nach verschiedenen Kriterien sortieren, z. B. zuerst nach Namen von az sortieren und dann nach dem höchsten bis niedrigsten Preis sortieren.
(BESTELLEN NACH Name, Preis DESC)
Mit GROUP BY können Sie Ihre Ergebnismenge in logische Gruppen gruppieren und dann aggregierte Abfragen für diese Gruppen ausführen. Sie können beispielsweise alle Mitarbeiter auswählen, sie nach ihrem Arbeitsplatz gruppieren und das Durchschnittsgehalt aller Mitarbeiter jedes Arbeitsplatzes berechnen.
Einfach, ORDER BY
ordnet die Daten und GROUP BY
Gruppen an oder kombiniert die Daten.
ORDER BY
ordnet die Ergebnismenge gemäß dem genannten Feld standardmäßig in aufsteigender Reihenfolge an.
Angenommen, Sie lösen eine Abfrage aus, da ORDER BY (student_roll_number)
dies zu einer aufsteigenden Reihenfolge der Rollennummern der Schüler führt. Hier,student_roll_number
Eingabe mehrmals erfolgen.
In diesem GROUP BY
Fall verwenden wir dies mit Aggregatfunktionen und gruppieren die Daten gemäß der Aggregatfunktion, und wir erhalten das Ergebnis. Wenn hier unsere Abfrage hat SUM (marks)
zusammen mit GROUP BY (student_first_name)
ihm wird die Summe der Noten der Schüler zeigen zu jeder Gruppe gehören (in der alle Mitglieder einer Gruppe die gleichen Vornamen haben).
GROUP BY wird verwendet, um Zeilen in einer Auswahl zu gruppieren, normalerweise beim Aggregieren von Zeilen (z. B. Berechnen von Summen, Durchschnittswerten usw. für eine Reihe von Zeilen mit denselben Werten für einige Felder).
ORDER BY wird verwendet, um die Zeilen zu ordnen, die aus einer select-Anweisung resultieren.
Einige gute Beispiele dort. Ich möchte nur mein eigenes aus dem Webcheatsheet hinzufügen, das gute, klare Beispiele enthält, und Sie können Ihr eigenes SQL ausführen.
ORDER BY
zeigt ein Feld in aufsteigender oder absteigender Reihenfolge. Während GROUP BY
zeigt die gleichen Feldnamen, IDs usw. in nur einer Ausgabe.
Es sollte beachtet werden, dass dies GROUP BY
nicht immer erforderlich ist, da Sie (zumindest in PostgreSQL und wahrscheinlich in anderen SQL-Varianten) ORDER BY
eine Liste verwenden können und diese weiterhin ASC
oder DESC
pro Spalte verwenden können ...
SELECT name_first, name_last, dob
FROM those_guys
ORDER BY name_last ASC, name_first ASC, dob DESC;