Manuel du didac...SE CONNECTER
Manuel du didacticiel de démarrage SQL
auteur:php.cn  temps de mise à jour:2022-04-12 14:15:40

GROUPE SQL PAR


Instruction

SQL GROUP BY


L'instruction GROUP BY peut être combinée avec certaines fonctions d'agrégation pour utiliser


Instruction GROUP BY

L'instruction GROUP BY est utilisée conjointement avec des fonctions d'agrégation pour regrouper l'ensemble de résultats en fonction d'une ou plusieurs colonnes.

Syntaxe SQL GROUP BY

SELECT nom_colonne, fonction_agrégat (nom_colonne)
FROM nom_table
WHERE valeur de l'opérateur nom_colonne
GROUP BY nom_colonne;


Base de données de démonstration

Dans ce tutoriel, nous utiliserons un exemple de base de données php.

Voici les données sélectionnées dans le tableau "Sites Web" :

+----+--------------+-- - --------------+------+---------+
| identifiant | | url                                                              | | États-Unis
| 2 | Taobao | https://www.taobao.com/ | |
| Weibo | http://weibo.com/ |
| | stackoverflow | http://stackoverflow.com/ | 0 |
+----+--------------+--------- - ----------------+------+---------+

Voici les données de la table d'enregistrement d'accès au site Web "access_log" :

mysql> SELECT * FROM access_log;
+-----+------ --- +-------+------------+
| aide site_id | compte date |
+-----+--- --- ---+-------+------------+
| 1 | 45 | 2016-05-10 |
| 3 | 100 | 2016-05-13 |
| 3 | 2016-05-14 |
| 4 | 2016-05-14 |
| | 2016-05-14 |
| 6 | 13 | 2016-05-15 |
| -05 -16 |
| 9 | 201 | 2016-05-17 |
+-----+---------+------+- -- ---------+
9 lignes dans l'ensemble (0,00 sec)

GROUPE PAR application simple

statistiques access_log visites à chacun site_id :

Instance

SELECT site_id, SUM(access_log.count) AS nums
FROM access_log GROUP BY site_id;
Le résultat de l'exécution du SQL ci-dessus est le suivant :



SQL GROUP BY Multi-Table Join

Nous souhaitons maintenant connaître le nombre de commandes livrées par chaque livreur.

L'instruction SQL suivante compte le nombre d'enregistrements visités par tous les sites Web :

Instance

SELECT Websites.name,COUNT(access_log.aid) AS nums FROM access_log
LEFT JOIN Sites Web
ON access_log.site_id=Websites.id
GROUP BY Websites.name;
Le résultat de l'exécution du code SQL ci-dessus est le suivant :