Oracle
 sql >> Datenbank >  >> RDS >> Oracle

GROUP BY ohne Aggregatfunktion

So funktioniert GROUP BY. Es nimmt mehrere Reihen und verwandelt sie in eine Reihe. Aus diesem Grund muss es wissen, was mit allen kombinierten Zeilen zu tun ist, in denen einige Spalten (Felder) unterschiedliche Werte haben. Aus diesem Grund haben Sie für jedes Feld, das Sie auswählen möchten, zwei Optionen:Entweder fügen Sie es in die GROUP BY-Klausel ein oder verwenden es in einer Aggregatfunktion, damit das System weiß, wie Sie das Feld kombinieren möchten.

Nehmen wir zum Beispiel an, Sie haben diese Tabelle:

Name | OrderNumber
------------------
John | 1
John | 2

Wenn Sie GROUP BY Name sagen, woher weiß es, welche OrderNumber im Ergebnis angezeigt werden soll? Sie fügen also entweder OrderNumber in group by ein, was zu diesen beiden Zeilen führt. Oder Sie verwenden eine Aggregatfunktion, um zu zeigen, wie die OrderNumbers behandelt werden. Beispiel:MAX(OrderNumber) , was bedeutet, dass das Ergebnis John | 2 oder SUM(OrderNumber) was bedeutet, dass das Ergebnis John | 3 .