SQL GROUP BYSentencias
La sentencia GROUP BY se puede usar junto con algunas funciones de agregación.
Sentencia GROUP BY
La sentencia GROUP BY se utiliza junto con funciones de agregación para agrupar el conjunto de resultados según una o más columnas.
Sintaxis de 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 datos de demostración
En este tutorial, usaremos la base de datos de muestra EJEMPLO.
A continuación se muestran los datos seleccionados de la tabla "Websites":
+----+--------------+---------------------------+-------+---------+ | id | name | url | alexa | country | +----+--------------+---------------------------+-------+---------+ | 1 | Google | https://www.google.cm/ | 1 | USA | | 2 | 淘宝 | https://www.taobao.com/ | 13 | CN | | 3 | Ejemplo | 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 | +----+---------------+---------------------------+-------+---------+
A continuación se muestran los datos de la tabla de registros de acceso al sitio 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)
Aplicación simple de GROUP BY
Cuente el número de visitas de cada site_id en access_log:
Ejemplo
SELECT site_id, SUM(access_log.count) AS
nums
FROM access_log GROUP BY site_id;
FROM access_log GROUP BY site_id;
Al ejecutar el SQL anterior, el resultado es el siguiente:
SQL GROUP BY con combinación de varias tablas
La siguiente sentencia SQL cuenta el número de registros de los sitios web que tienen registros:
Ejemplo
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;
Al ejecutar el SQL anterior, el resultado es el siguiente: