Directorio de artículos
MySQL ¿Sumar grupo por uso?base de datos mysqlExplicación detallada del grupo por conteo
MySQL declaración GROUP BY
La instrucción GROUP BY agrupa el conjunto de resultados en función de una o más columnas.
En la columna agrupada podemos usar las funciones COUNT, SUM, AVG, etc.
GRUPO POR sintaxis
SELECT column_name, function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name;
Ejemplo de demostración
El ejemplo de este capítulo utiliza la siguiente estructura de tabla y datos. Antes de usarla, podemos importar los siguientes datos a la base de datos.
SET NAMES utf8; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for `employee_tbl` -- ---------------------------- DROP TABLE IF EXISTS `employee_tbl`; CREATE TABLE `employee_tbl` ( `id` int(11) NOT NULL, `name` char(10) NOT NULL DEFAULT '', `date` datetime NOT NULL, `singin` tinyint(4) NOT NULL DEFAULT '0' COMMENT '登录次数', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of `employee_tbl` -- ---------------------------- BEGIN; INSERT INTO `employee_tbl` VALUES ('1', '小明', '2016-04-22 15:25:33', '1'), ('2', '小王', '2016-04-20 15:25:47', '3'), ('3', '小丽', '2016-04-19 15:26:02', '2'), ('4', '小王', '2016-04-07 15:26:14', '4'), ('5', '小明', '2016-04-11 15:26:40', '4'), ('6', '小明', '2016-04-04 15:26:54', '2'); COMMIT; SET FOREIGN_KEY_CHECKS = 1;
Después de que la importación sea exitosa, ejecute la siguiente instrucción SQL:
mysql> set names utf8; mysql> SELECT * FROM employee_tbl; +----+--------+---------------------+--------+ | id | name | date | singin | +----+--------+---------------------+--------+ | 1 | 小明 | 2016-04-22 15:25:33 | 1 | | 2 | 小王 | 2016-04-20 15:25:47 | 3 | | 3 | 小丽 | 2016-04-19 15:26:02 | 2 | | 4 | 小王 | 2016-04-07 15:26:14 | 4 | | 5 | 小明 | 2016-04-11 15:26:40 | 4 | | 6 | 小明 | 2016-04-04 15:26:54 | 2 | +----+--------+---------------------+--------+ 6 rows in set (0.00 sec)
A continuación, usamos la declaración GROUP BY para agrupar la tabla de datos por nombre y contar cuántos registros tiene cada persona:
mysql> SELECT name, COUNT(*) FROM employee_tbl GROUP BY name; +--------+----------+ | name | COUNT(*) | +--------+----------+ | 小丽 | 1 | | 小明 | 3 | | 小王 | 2 | +--------+----------+ 3 rows in set (0.01 sec)
Usar CON ROLLUP
WITH ROLLUP puede implementar las mismas estadísticas (SUM, AVG, COUNT...) sobre la base de estadísticas agrupadas.
Por ejemplo, agrupamos la tabla de datos anterior por nombre y luego contamos la cantidad de veces que cada persona ha iniciado sesión:
mysql> SELECT name, SUM(singin) as singin_count FROM employee_tbl GROUP BY name WITH ROLLUP; +--------+--------------+ | name | singin_count | +--------+--------------+ | 小丽 | 2 | | 小明 | 7 | | 小王 | 7 | | NULL | 16 | +--------+--------------+ 4 rows in set (0.00 sec)
El registro NULL representa el número de inicios de sesión para todos.
Podemos usar coalesce para establecer un nombre que pueda reemplazar NUll, coalesce sintaxis:
select coalesce(a,b,c);
Descripción del parámetro: si a==null, elija b; si b==null, elija c; si a!=null, elija a; si abc es nulo, devuelva nulo (sin sentido).
En el siguiente ejemplo, si el nombre está vacío, usamos el total en su lugar:
mysql> SELECT coalesce(name, '总数'), SUM(singin) as singin_count FROM employee_tbl GROUP BY name WITH ROLLUP; +--------------------------+--------------+ | coalesce(name, '总数') | singin_count | +--------------------------+--------------+ | 小丽 | 2 | | 小明 | 7 | | 小王 | 7 | | 总数 | 16 | +--------------------------+--------------+ 4 rows in set (0.01 sec)
Esperanza Chen Weiliang Blog ( https://www.chenweiliang.com/ ) compartido "grupo de suma de MySQL por uso? Explicación detallada de Group by Count en MySQL Database" es útil para usted.
Bienvenido a compartir el enlace de este artículo:https://www.chenweiliang.com/cwl-477.html
Para desbloquear más trucos ocultos🔑, ¡bienvenido a unirse a nuestro canal de Telegram!
¡Comparte y dale me gusta si te gusta! ¡Tus acciones y me gusta son nuestra motivación continua!