Wann verwenden Sie was im Allgemeinen? Beispiele sind sehr erwünscht!
Ich beziehe mich also auf MySql, kann mir aber nicht vorstellen, dass sich das Konzept auf einem anderen DBMS unterscheidet
ORDER BY ändert die Reihenfolge, in der die Artikel zurückgegeben werden.
GROUP BY fasst Datensätze nach den angegebenen Spalten zusammen, sodass Sie Aggregationsfunktionen für nicht gruppierte Spalten (wie SUM, COUNT, AVG usw.) ausführen können.
ORDER BY ändert die Reihenfolge, in der die Artikel zurückgegeben werden.
GROUP BY fasst Datensätze nach den angegebenen Spalten zusammen, 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
ORDER BY: Sortiere die Daten aufsteigend oder absteigend.
Betrachten Sie die-KUNDEN-Tabelle:
+----+----------+-----+-----------+----------+
| 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 folgendes Ergebnis ergeben:
+----+----------+-----+-----------+----------+
| 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.
CUSTOMERStable hat 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 in einen einzigen Namen gruppieren möchten, lautet die GROUP BY-Abfrage wie folgt:
SQL> SELECT * FROM CUSTOMERS
GROUP BY NAME;
Dies würde zu folgendem Ergebnis führen: (Bei identischen Namen würde es den letzten auswählen und die Spalte schließlich in aufsteigender Reihenfolge sortieren.)
+----+----------+-----+-----------+----------+
| 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 schlussfolgerten, dass es ohne SQL-Funktionen wie sum, avg usw. nützt.
gehen Sie also diese Definition durch, um die korrekte Verwendung von GROUP BY zu verstehen:
Eine GROUP BY-Klausel bearbeitet die Zeilen, die von einer Abfrage zurückgegeben werden, indem sie .__ zusammenfasst. identische Zeilen in einer einzelnen/unterschiedlichen Gruppe und gibt eine einzelne Zeile zurück mit der Zusammenfassung für jede Gruppe, indem das entsprechende Aggregat verwendet wird Funktion in der SELECT-Liste, wie COUNT (), SUM (), MIN (), MAX (), AVG (), usw.
Wenn Sie nun den Gesamtlohn für jeden Kunden (Namen) erfahren möchten, lautet die GROUP BY-Abfrage wie folgt:
SQL> SELECT NAME, SUM(SALARY) FROM CUSTOMERS
GROUP BY NAME;
Dies würde folgendes Ergebnis ergeben: (Summe der Gehälter identischer Namen und Sortierung der Spalte NAME, nachdem identische Namen entfernt wurden)
+---------+-------------+
| 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 führt eine Gruppierungsoperation durch und eine Sortierung nach Sortierung.
Wenn Sie SELECT * FROM Customers ORDER BY Name
tun, wird die Ergebnisliste nach dem Namen des Kunden sortiert.
Wenn Sie SELECT IsActive, COUNT(*) FROM Customers GROUP BY IsActive
tun, erhalten Sie eine Zählung der aktiven und inaktiven Kunden. Die Gruppe fasst die Ergebnisse basierend auf dem von Ihnen angegebenen Feld zusammen.
Sie haben eine völlig andere Bedeutung und sind überhaupt nicht verwandt.
Mit ORDER BY können Sie die Ergebnismenge nach verschiedenen Kriterien sortieren, z. B. zuerst nach Namen von a-z sortieren und dann nach dem höchsten oder niedrigsten Preis sortieren.
(BESTELLEN nach Name, Preis DESC)
Mit GROUP BY können Sie Ihre Ergebnismenge übernehmen, in logische Gruppen gruppieren und dann Aggregatabfragen für diese Gruppen ausführen. Sie können beispielsweise alle Mitarbeiter auswählen, sie nach ihrem Arbeitsplatzstandort gruppieren und das Durchschnittsgehalt aller Mitarbeiter eines Arbeitsplatzstandorts berechnen.
Einfach ORDER BY
bestellt die Daten und GROUP BY
Gruppen oder fasst die Daten zusammen.
ORDER BY
ordnet die Ergebnismenge gemäß dem genannten Feld standardmäßig in aufsteigender Reihenfolge an.
Angenommen, Sie feuern eine Abfrage als ORDER BY (student_roll_number)
ab. Die Ergebnisse werden in aufsteigender Reihenfolge der Rollennummern der Schüler angezeigt. Hier kann der student_roll_number
-Eintrag mehr als einmal vorkommen.
In GROUP BY
verwenden wir dies mit Aggregatfunktionen und gruppieren die Daten nach Aggregatfunktionen, und wir erhalten das Ergebnis. Wenn unsere Abfrage SUM (marks)
zusammen mit GROUP BY (student_first_name)
enthält, wird hier die Summe der Noten der Schüler angezeigt, die zu jeder Gruppe gehören (wobei alle Mitglieder einer Gruppe denselben Vornamen haben).
GROUP BY wird verwendet, um Zeilen in einer Auswahl zu gruppieren, normalerweise beim Zusammenfassen von Zeilen (z. B. Berechnen von Summen, Durchschnittswerten usw. für einen Satz von Zeilen mit den gleichen Werten für einige Felder).
ORDER BY wird verwendet, um die aus einer select-Anweisung resultierenden Zeilen zu sortieren.
Einige gute Beispiele dort. Fügen Sie einfach ein eigenes aus dem Webcheatsheet hinzu, das gute Beispiele liefert und Sie Ihre eigene SQL ausführen können.
ORDER BY
zeigt ein Feld in aufsteigender oder absteigender Reihenfolge. Während GROUP BY
in nur einer Ausgabe dieselben Feldnamen, IDs usw. anzeigt.
Es sollte beachtet werden, dass GROUP BY
nicht immer notwendig ist, da (zumindest in PostgreSQL und wahrscheinlich auch in anderen SQL-Varianten) ORDER BY
mit einer Liste und verwendet werden kann. Sie können jedoch ASC
oder DESC
per column verwenden. .
SELECT name_first, name_last, dob
FROM those_guys
ORDER BY name_last ASC, name_first ASC, dob DESC;