Latest web development tutorials

instruction SQL GROUP BY

GROUP BY peut être combiné avec des fonctions d'agrégation à utiliser


GROUP BY

GROUP BY est utilisé pour combiner les fonctions d'agrégation, conformément à une ou plusieurs colonnes dans le jeu de résultats en groupes.

SQL GROUP BY Syntaxe

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;


La base de données de démonstration

Dans ce tutoriel, nous allons utiliser la base de données de l'échantillon w3big.

Ce qui suit est un «Sites Web» sélectionnés de données de la table:

+----+--------------+---------------------------+-------+---------+
| id | name         | url                       | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 1  | Google       | https://www.google.cm/    | 1     | USA     |
| 2  | 淘宝          | https://www.taobao.com/   | 13    | CN      |
| 3  | 本教程      | http://www.w3big.com/    | 4689  | CN      |
| 4  | 微博          | http://weibo.com/         | 20    | CN      |
| 5  | Facebook     | https://www.facebook.com/ | 3     | USA     |
| 7  | stackoverflow | http://stackoverflow.com/ |   0 | IND     |
+----+---------------+---------------------------+-------+---------+

Voici les données "access_log" table d'enregistrement d'accès du site:

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)


GROUP BY application simple

Statistiques des visites access_log SITE_ID de chaque:

Exemples

SELECT site_id, SUM(access_log.count) AS nums
FROM access_log GROUP BY site_id;

Exécutez le SQL ci-dessus des résultats de sortie sont les suivantes:



GROUPE SQL PAR multi-table se joint

Maintenant, nous voulons trouver le nombre de commandes pour chaque livraison de courrier.

Les statistiques de l'instruction SQL suivante enregistre tous les sites visités:

Exemples

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;

Exécutez le SQL ci-dessus des résultats de sortie sont les suivantes: