SQL GROUP par Déclaration
Les fonctions d'agrégation ont souvent besoin d'une GROUPE ajouté BY.
La clause GROUP par Déclaration
L'instruction GROUP BY est utilisée en conjonction avec les fonctions d'agrégation pour regrouper l'ensemble de résultats par une ou plusieurs colonnes.
Syntaxe SQL GROUP BY
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
FROM table_name
WHERE column_name operator value
GROUP BY column_name
Exemple SQL GROUP
Nous avons ce qui suit "Commandes" table:
O_ID | OrderDate | OrderPrice | Client |
---|---|---|---|
1 | 12/11/2008 | 1000 | Hansen |
2 | 23/10/2008 | 1600 | Nilsen |
3 | 02/09/2008 | 700 | Hansen |
4 | 03/09/2008 | 300 | Hansen |
5 | 30/08/2008 | 2000 | Jensen |
6 | 04/10/2008 | 100 | Nilsen |
Maintenant, nous voulons trouver la somme totale (total de la commande) de chaque client.
Nous allons devoir utiliser le GROUP BY pour regrouper les clients.
Nous utilisons l'instruction SQL suivante:
SELECT Customer,SUM(OrderPrice) FROM Orders
GROUP BY Customer
GROUP BY Customer
L'ensemble de résultats se présente comme suit:
Client | SUM (OrderPrice) |
---|---|
Hansen | 2000 |
Nilsen | 1700 |
Jensen | 2000 |
Nice! N'est-ce pas? :)
Voyons ce qui se passe si nous omettons l'instruction GROUP BY:
SELECT Customer,SUM(OrderPrice) FROM Orders
L'ensemble de résultats se présente comme suit:
Client | SUM (OrderPrice) |
---|---|
Hansen | 5700 |
Nilsen | 5700 |
Hansen | 5700 |
Hansen | 5700 |
Jensen | 5700 |
Nilsen | 5700 |
L'ensemble de résultats ci-dessus n'est pas ce que nous voulions.
Explication de la raison pour laquelle la déclaration SELECT ci-dessus ne peuvent pas être utilisés: L'instruction SELECT ci-dessus a deux colonnes spécifiées (Client et SUM (OrderPrice) Le "SUM (OrderPrice)" renvoie une seule valeur (qui est la somme totale de la "OrderPrice" colonne. ), tandis que le «client» renvoie 6 valeurs (une valeur pour chaque ligne de la "Commandes" tableau). Ce ne sera donc pas nous donner le résultat correct. Cependant, vous avez vu que l'instruction GROUP BY permet de résoudre ce problème.
GROUP par plusieurs colonnes
On peut aussi utiliser la clause GROUP BY déclaration sur plus d'une colonne, comme ceci:
SELECT Customer,OrderDate,SUM(OrderPrice) FROM Orders
GROUP BY Customer,OrderDate
GROUP BY Customer,OrderDate
0 commentaires:
Post a Comment
HELLO VISITORS THANKS FOR YOUR VISIT AND COMMENT