it-swarm.com.de

was ist der Unterschied zwischen GROUP BY und ORDER BY in SQL

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

104
vehomzzz

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.

74
CMerat

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
227
RiddlerDev

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 |
+---------+-------------+
61
JerryGoyal

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.

22
Max Schmeling

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.

14

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).

8

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.

4

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.

SQL Auftrag nach

SQL-Gruppe nach

4
kevchadders
  1. GROUP BY fasst Datensätze nach der angegebenen Spalte zusammen, sodass Sie Aggregationsfunktionen für nicht gruppierte Spalten (z. B. SUMME, COUNT, AVG usw.) ausführen können. ORDER BY ändert die Reihenfolge, in der die Artikel zurückgegeben werden.
  2. Wenn Sie SELECT IsActive, COUNT (*) FROM Customers GROUP BY IsActive Tun, erhalten Sie eine Anzahl von aktiven und inaktiven Kunden. Die Gruppe fasst die Ergebnisse basierend auf dem von Ihnen angegebenen Feld zusammen. Wenn Sie SELECT * FROM Customers ORDER BY Name Auswählen, wird die Ergebnisliste nach dem Namen des Kunden sortiert.
  3. Wenn Sie GRUPPE verwenden, werden die Ergebnisse nicht notwendigerweise sortiert. Obwohl sie in vielen Fällen in einer intuitiven Reihenfolge erscheinen, wird dies durch die GROUP-Klausel nicht garantiert. Wenn Sie möchten, dass Ihre Gruppen sortiert werden, verwenden Sie nach GROUP BY immer explizit ORDER BY.
  4. Gruppierte Daten können nicht durch die WHERE-Klausel gefiltert werden. Auftragsdaten können nach WHERE-Klausel gefiltert werden.
1
Khadija

ORDER BY zeigt ein Feld in aufsteigender oder absteigender Reihenfolge. Während GROUP BY in nur einer Ausgabe dieselben Feldnamen, IDs usw. anzeigt.

1
Im_khan

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;
0
John