SQL GROUP BYInstructions
L'instruction GROUP BY peut être utilisée avec certaines fonctions d'agrégation.
Instruction GROUP BY
L'instruction GROUP BY est utilisée conjointement avec des 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;
Base de données de démonstration
Dans ce tutoriel, nous utiliserons la base de données d'exemple EXAMPLE.
Voici les données sélectionnées dans la table "Websites" :
+----+--------------+---------------------------+-------+---------+ | id | name | url | alexa | country | +----+--------------+---------------------------+-------+---------+ | 1 | Google | https://www.google.cm/ | 1 | USA | | 2 | 淘宝 | https://www.taobao.com/ | 13 | CN | | 3 | Example | http://www.example.com/ | 4689 | CN | | 4 | 微博 | http://weibo.com/ | 20 | CN | | 5 | Facebook | https://www.facebook.com/ | 3 | USA | | 7 | stackoverflow | http://stackoverflow.com/ | 0 | IND | +----+---------------+---------------------------+-------+---------+
Ci-dessous se trouvent les données de la table de journal d'accès du site Web "access_log" :
mysql> SELECT * FROM access_log; +-----+---------+-------+------------+ | aid | site_id | count | date | +-----+---------+-------+------------+ | 1 | 1 | 45 | 2016-05-10 | | 2 | 3 | 100 | 2016-05-13 | | 3 | 1 | 230 | 2016-05-14 | | 4 | 2 | 10 | 2016-05-14 | | 5 | 5 | 205 | 2016-05-14 | | 6 | 4 | 13 | 2016-05-15 | | 7 | 3 | 220 | 2016-05-15 | | 8 | 5 | 545 | 2016-05-16 | | 9 | 3 | 201 | 2016-05-17 | +-----+---------+-------+------------+ 9 rows in set (0.00 sec)
Application simple de GROUP BY
Compter les visites de chaque site_id dans access_log :
Exemples
SELECT site_id, SUM(access_log.count) AS
nums
FROM access_log GROUP BY site_id;
FROM access_log GROUP BY site_id;
L'exécution du SQL ci-dessus produit la sortie suivante :
SQL GROUP BY Jointure multi-tables
L'instruction SQL suivante compte le nombre d'enregistrements pour les sites Web qui ont des enregistrements :
Exemple
SELECT Websites.name,COUNT(access_log.aid) AS nums FROM
access_log
LEFT JOIN Websites
ON access_log.site_id=Websites.id
GROUP BY Websites.name;
LEFT JOIN Websites
ON access_log.site_id=Websites.id
GROUP BY Websites.name;
L'exécution du SQL ci-dessus produit la sortie suivante :