Rakstu katalogs
Kā lietot MySQL funkciju SUM GROUP BY? Detalizēts GROUP BY COUNT skaidrojums MySQL datubāzē.
MySQL GROUP BY paziņojums
Priekšraksts GROUP BY grupē rezultātu kopu, pamatojoties uz vienu vai vairākām kolonnām.
Grupētajā kolonnā varam izmantot funkcijas COUNT, SUM, AVG utt.
GROUP BY sintakse
SELECT column_name, function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name;
Demonstrācijas piemērs
Šīs nodaļas piemērā ir izmantota šāda tabulas struktūra un dati.Pirms tās izmantošanas mēs varam importēt šādus datus datu bāzē.
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;
Kad importēšana ir veiksmīga, izpildiet šādu SQL priekšrakstu:
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)
Tālāk mēs izmantojam priekšrakstu GROUP BY, lai grupētu datu tabulu pēc nosaukuma un saskaitītu, cik ierakstu ir katrai personai:
mysql> SELECT name, COUNT(*) FROM employee_tbl GROUP BY name; +--------+----------+ | name | COUNT(*) | +--------+----------+ | 小丽 | 1 | | 小明 | 3 | | 小王 | 2 | +--------+----------+ 3 rows in set (0.01 sec)
Izmantojiet AR ROLLUP
AR ROLLUP var ieviest to pašu statistiku (SUM, AVG, COUNT...), pamatojoties uz grupētu statistiku.
Piemēram, mēs grupējam iepriekš minēto datu tabulu pēc vārda un pēc tam saskaitām, cik reižu katra persona ir pieteikusies:
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)
Ieraksts NULL norāda pieteikšanās reižu skaitu visiem.
Mēs varam izmantot apvienošanu, lai iestatītu nosaukumu, kas var aizstāt NUll, apvienot sintaksi:
select coalesce(a,b,c);
Parametra apraksts: ja a==nulle, izvēlieties b; ja b==null, izvēlieties c; ja a!=null, izvēlieties a; ja abc ir nulle, atgriež nulli (bez nozīmes).
Nākamajā piemērā, ja nosaukums ir tukšs, mēs izmantojam kopējo summu:
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)
Cerams, ka jums noderēs raksts "MySQL SUM GROUP BY lietošana? Detalizēts GROUP BY COUNT skaidrojums MySQL datubāzē", kas publicēts Čena Veiljana emuārā ( https://www.chenweiliang.com/ ).
Droši kopīgojiet šo raksta saiti: https://www.chenweiliang.com/cwl-477.html
