Grup de suma de MySQL per ús? Explicació detallada del grup per recompte a la base de dades MySQL

MySQL Suma el grup per ús?Base de dades MySQLExplicació detallada del grup per recompte

Declaració MySQL GROUP BY

La instrucció GROUP BY agrupa el conjunt de resultats en funció d'una o més columnes.

A la columna agrupada podem utilitzar les funcions COUNT, SUM, AVG, etc.

Sintaxi GROUP BY

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

Exemple de demostració

L'exemple d'aquest capítol utilitza l'estructura i les dades de la taula següents. Abans d'utilitzar-la, podem importar les dades següents a la base de dades.

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;

Després de la importació correcta, executeu la següent instrucció 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ó, utilitzem la instrucció GROUP BY per agrupar la taula de dades pel nom i comptar quants registres té cada persona:

mysql> SELECT name, COUNT(*) FROM   employee_tbl GROUP BY name;
+--------+----------+
| name   | COUNT(*) |
+--------+----------+
| 小丽 |        1 |
| 小明 |        3 |
| 小王 |        2 |
+--------+----------+
3 rows in set (0.01 sec)

ÚS AMB ROLLUP

WITH ROLLUP pot implementar les mateixes estadístiques (SUMA, AVG, COUNT...) a partir d'estadístiques agrupades.

Per exemple, agrupem la taula de dades anterior per nom i després comptem el nombre de vegades que cada persona ha iniciat sessió:

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 registre NULL representa el nombre d'inicis de sessió per a tothom.

Podem utilitzar coalesce per establir un nom que pugui substituir NUll, coalesce sintaxi:

select coalesce(a,b,c);

Descripció del paràmetre: si a==nul, trieu b; si b==null, trieu c; si a!=nul, trieu a; si abc és nul, retorneu nul (sense sentit).

En l'exemple següent, si el nom està buit, fem servir el total:

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)

Bloc d'Hope Chen Weiliang ( https://www.chenweiliang.com/ ) compartit "Grup de suma de MySQL per ús? L'explicació detallada del grup per recompte a la base de dades MySQL us és útil.

Benvingut a compartir l'enllaç d'aquest article:https://www.chenweiliang.com/cwl-477.html

Benvingut al canal de Telegram del bloc de Chen Weiliang per rebre les últimes actualitzacions!

🔔 Sigues el primer a obtenir la valuosa "Guia d'ús de l'eina de màrqueting de continguts de ChatGPT" al directori principal del canal! 🌟
📚 Aquesta guia té un gran valor, 🌟Aquesta és una oportunitat rara, no la perdis! ⏰⌛💨
Comparteix i m'agrada si t'agrada!
Els vostres likes i compartir són la nostra motivació contínua!

 

发表 评论

La vostra adreça de correu electrònic no es publicarà. S'utilitzen els camps obligatoris * 标注

desplaçar-se a dalt