Director articol
Cum se utilizează SUM GROUP BY în MySQL ? Explicație detaliată a GROUP BY COUNT în baza de date MySQL.
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)
Sperăm că articolul „Utilizarea MySQL SUM GROUP BY? Explicație detaliată a GROUP BY COUNT în baza de date MySQL” distribuit pe blogul lui Chen Weiliang ( https://www.chenweiliang.com/ ) vă va fi de ajutor.
Nu ezitați să distribuiți linkul acestui articol: https://www.chenweiliang.com/cwl-477.html
