Director articol
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!
📚 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ă!