Grupul de sumă MySQL în funcție de utilizare? Explicație detaliată a grupului după număr în baza de date MySQL

MySQL Sumă grupul după utilizare?Baza de date MySQLExplicație detaliată a grupului după număr

Instrucțiunea MySQL GROUP BY

Instrucțiunea GROUP BY grupează setul de rezultate pe baza uneia sau mai multor coloane.

Pe coloana grupată putem folosi funcții COUNT, SUM, AVG etc.

Sintaxa GROUP BY

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

Exemplu de demonstrație

Exemplul din acest capitol folosește următoarea structură de tabel și date. Înainte de a-l folosi, putem importa următoarele date în baza de date.

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;

După ce importul are succes, executați următoarea instrucțiune 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)

Apoi folosim instrucțiunea GROUP BY pentru a grupa tabelul de date după nume și pentru a număra câte înregistrări are fiecare persoană:

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

Utilizați CU ROLLUP

WITH ROLLUP poate implementa aceleași statistici (SUM, AVG, COUNT...) pe baza statisticilor grupate.

De exemplu, grupăm tabelul de date de mai sus după nume și apoi numărăm de câte ori fiecare persoană s-a conectat:

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)

Înregistrarea NULL reprezintă numărul de autentificări pentru toată lumea.

Putem folosi coalesce pentru a seta un nume care poate înlocui NUll, sintaxa coalesce:

select coalesce(a,b,c);

Descrierea parametrului: dacă a==null, alegeți b; dacă b==null, alegeți c; dacă a!=null, alegeți a; dacă abc este nul, returnați null (fără sens).

În exemplul următor, dacă numele este gol, folosim în schimb totalul:

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)

Hope Chen Weiliang Blog ( https://www.chenweiliang.com/ ) a distribuit „Grupul de sumă MySQL în funcție de utilizare? Explicația detaliată a grupării după număr în baza de date MySQL" vă este utilă.

Bine ați venit să distribuiți linkul acestui articol:https://www.chenweiliang.com/cwl-477.html

Bun venit pe canalul Telegram al blogului lui Chen Weiliang pentru a primi cele mai recente actualizări!

🔔 Fii primul care primește valorosul „Ghid de utilizare a instrumentului AI pentru marketing de conținut ChatGPT” în directorul de top al canalului! 🌟
📚 Acest ghid conține o valoare uriașă, 🌟Aceasta este o oportunitate rară, nu o ratați! ⏰⌛💨
Distribuie si da like daca iti place!
Partajarea și like-urile tale sunt motivația noastră continuă!

 

发表 评论

Adresa ta de email nu va fi publicată. Sunt utilizate câmpurile obligatorii * Eticheta

derulați în sus