Oracle
 sql >> Base de données >  >> RDS >> Oracle

GROUP BY sans fonction d'agrégation

C'est ainsi que fonctionne GROUP BY. Il prend plusieurs rangées et les transforme en une seule rangée. Pour cette raison, il doit savoir quoi faire avec toutes les lignes combinées où il y a des valeurs différentes pour certaines colonnes (champs). C'est pourquoi vous avez deux options pour chaque champ que vous souhaitez SELECT :soit l'inclure dans la clause GROUP BY, soit l'utiliser dans une fonction d'agrégation afin que le système sache comment vous souhaitez combiner le champ.

Par exemple, supposons que vous ayez ce tableau :

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

Si vous dites GROUP BY Name, comment saura-t-il quel numéro de commande afficher dans le résultat ? Donc, soit vous incluez OrderNumber dans group by, ce qui se traduira par ces deux lignes. Ou, vous utilisez une fonction d'agrégation pour montrer comment gérer les OrderNumbers. Par exemple, MAX(OrderNumber) , ce qui signifie que le résultat est John | 2 ou SUM(OrderNumber) ce qui signifie que le résultat est John | 3 .