Artiklite kataloog
MySQL Summarühm kasutuse järgi?MySQL andmebaasÜksikasjalik selgitus rühma kohta arvu järgi
MySQL GROUP BY avaldus
Lause GROUP BY rühmitab tulemuste komplekti ühe või mitme veeru alusel.
Grupeeritud veerus saame kasutada COUNT, SUM, AVG jne funktsioone.
GROUP BY süntaks
SELECT column_name, function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name;
Näidisesitlus
Selle peatüki näites on kasutatud järgmist tabeli struktuuri ja andmeid, enne selle kasutamist saame importida andmebaasi järgmised andmed.
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;
Pärast importimise õnnestumist käivitage järgmine SQL-lause:
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)
Järgmisena kasutame käsku GROUP BY, et rühmitada andmetabel nime järgi ja arvutada, mitu kirjet igal inimesel on:
mysql> SELECT name, COUNT(*) FROM employee_tbl GROUP BY name; +--------+----------+ | name | COUNT(*) | +--------+----------+ | 小丽 | 1 | | 小明 | 3 | | 小王 | 2 | +--------+----------+ 3 rows in set (0.01 sec)
Kasuta KOOS ROLLUPIS
ROLLUPiga saab rakendada sama statistikat (SUM, AVG, COUNT...) grupeeritud statistika alusel.
Näiteks rühmitame ülaltoodud andmetabeli nime järgi ja loendame seejärel, mitu korda iga inimene on sisse loginud:
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)
Kirje NULL tähistab kõigi sisselogimiste arvu.
Saame kasutada liitmist, et määrata nimi, mis võib asendada NUll, liita süntaksi:
select coalesce(a,b,c);
Parameetri kirjeldus: kui a==null, vali b; kui b==null, vali c; kui a!=null, vali a; kui abc on null, tagasta null (tähenduseta).
Järgmises näites, kui nimi on tühi, kasutame selle asemel kogusummat:
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 Weiliangi ajaveeb ( https://www.chenweiliang.com/ ) jagatud "MySQL-i summagrupp kasutuse järgi? Üksikasjalik selgitus grupi arvu järgi MySQL-i andmebaasis" on teile kasulik.
Tere tulemast selle artikli linki jagama:https://www.chenweiliang.com/cwl-477.html
Rohkemate varjatud nippide🔑 avamiseks liitu meie Telegrami kanaliga!
Jaga ja like kui meeldib! Teie jagamised ja meeldimised on meie jätkuvaks motivatsiooniks!