SQL-Tri et regroupement de résultats

Attention, depuis PHP 5.5.0, certaines extensions SQL sans doute utilisées dans ce tutoriel peuvent être obsolètes et seront supprimées dans le futur, vous devez donc adapter les codes! Exemples ici.

Certaines commandes SQL permettent d'effectuer des calcules assez facilement.

Dans les exemples qui suivent, nous utiliserons la table ci-dessous comme référence.

Table COMMENTAIRES
id pseudo commentaire age
1 toto Commentaire de toto 12
2 tata Commentaire de tata 41
3 titi Commentaire de titi 24
4 toto Commentaire 2 de toto 12
5 zaza Commentaire de zaza 36
6 tutu Commentaire de tutu 10


Clause AVG

La clause AVG permet de calculer la moyenne d'un champ. On utilise la fonction AS suivit du nom que vous voullez pour créer une colonne(champ) temporaire qui permet d'exécuter et de récupérer le résultat de la requête.

En résumé : AVG(nom_de_mon_champ_a_calculer)  AS un_champ_bidon = moyenne de nom_de_mon_champ_a_calculer

SELECT AVG(age) AS Moyenne FROM COMMENTAIRES

Le résultat de cette requête nous donnera donc une Moyenne de 22.5 qui correspond à la somme total du champ "age" (135) divisé par le nombre d'entrée (6).


La clause AVG peut être également utilisée avec la clause GROUP BY pour calculer la moyenne d'un regroupement.

SELECT id, pseudo, AVG(age) AS Moyenne FROM COMMENTAIRES GROUP BY pseudo

Le résultat de cette requête nous donne donc le tableau ci-dessous:

Table COMMENTAIRES
id pseudo Moyenne
2 tata 41
3 titi 24
1 toto 12
6 tutu 10
5 zaza 36

On constate bien que la moyenne par regroupement du champ "pseudo" a été éffectué puisque le pseudo "toto" utilisé 2 fois dans notre table initiale, nous retourne qu'un seul enregistrement avec une moyenne de 12, soit (12+12)/2.


Clause COUNT

La clause COUNT permet de calculer le nombre de lignes ou d'enregistrements dans une table.

SELECT COUNT(id)FROM COMMENTAIRES

Le résultat de cette requête nous donnera donc le chiffre 6. En résumé, la clause COUNT(id) permet de compter le nombre d'entrée du champ ""id de la table "COMMENTAIRES".


La clause COUNT peut être également utilisée avec la clause GROUP BY.

Dans cette exemple, nous allons calculer le nombre d'entrée du champ "id" en regroupant chaque entrée par pseudo utilisé.

SELECT COUNT(id), pseudo FROM COMMENTAIRES GROUP BY pseudo

Le résultat de cette requête nous donne donc le tableau ci-dessous:

COUNT(id) pseudo
1 tata
1 titi
2 toto
1 tutu
1 zaza

Une fois de plus, on constate bien que le calcul a été effectué puisque la clause COUNT(id) utilisée nous retourne bien le nombre de fois que chaque pseudo a été utilisé.


Clause MAX

La clause MAX permet de calculer la valeur MAXIMALE d'un champ. Supposons que vous souhaitez savoir qu'elle est le plus agé de vos utilisateurs dans votre table "COMMENTAIRES".

SELECT MAX(age)FROM COMMENTAIRES

Le résultat de cette requête nous donnera donc le chiffre 41.


La clause MAX peut être également utilisée avec la clause GROUP BY.
La requête qui suit risque de vous faire cuire les neurones ...

SELECT MAX(age), id, pseudo FROM COMMENTAIRES GROUP BY pseudo ORDER BY MAX(age) DESC

J'avais prévenu!!
En faite cette requête n'est pas si compliqué que ça et je vais vous expliqué ce qu'elle fait.
On demande tout simplement de sélectionner l'âge maximale du champ "age", l'id et le pseudo de la table COMMENTAIRES en regroupent les résultats par pseudo et en les classent par odre d'âge Descendant.

Ce qui nous donne comme résultat le tableau ci-dessous:

MAX(age) id pseudo
41 2 tata
36 5 zaza
24 3 titi
12 1 toto
10 6 tutu


Clause MIN

La clause MIN est l'inverse de la clause MAX. La clause MIN permet donc de calculer la valeur MINIMALE d'un champ.

SELECT MIN(age) FROM COMMENTAIRES

Le résultat de cette requête nous donnera donc le chiffre 10. Tout comme la clause MAX, elle peut être utilisée avec la clause GROUP BY.


Clause SUM

La clause SUM permet de calculer la somme des valeurs d'un champ.
Supposons que l'ont veuillent calculer la somme total des âges du champ "age".

SELECT SUM(age) FROM COMMENTAIRES

Le résultat de cette requête nous donc le chiffre 135, sinon dit, l'addition de tous les âges.


La clause SUM peut également être utilisée avec la clause GROUP BY.

SELECT SUM(age),id, pseudo FROM COMMENTAIRES GROUP BY pseudo ORDER BY id ASC

Cette requête permet de calculer la somme total des âges du champs "age" en les regroupant par pseudo, de sélectionner l'id et le pseudo et d'afficher le résultat par ordre croissant.

Ce qui nous donne comme résultat le tableau ci-dessous:

MAX(age) id pseudo
24 1 toto
41 2 tata
24 3 titi
36 5 zaza
10 6 tutu
Voir/déposer un commentaire (2) | Signaler un problème