Cyfeiriadur Erthygl
MySQL Swm grŵp yn ôl defnydd?Cronfa ddata MySQLEsboniad manwl o grŵp fesul cyfrif
GRŴP MySQL GAN ddatganiad
Mae'r datganiad GRŴP BYTH yn grwpio'r set canlyniadau yn seiliedig ar un neu fwy o golofnau.
Ar y golofn wedi'i grwpio gallwn ddefnyddio swyddogaethau COUNT, SUM, AVG, ac ati.
GRWP GAN gystrawen
SELECT column_name, function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name;
Arddangosiad enghreifftiol
Mae'r enghraifft yn y bennod hon yn defnyddio'r strwythur tabl a'r data canlynol: Cyn ei ddefnyddio, gallwn fewnforio'r data canlynol i'r gronfa ddata.
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;
Ar ôl i'r mewnforio fod yn llwyddiannus, gweithredwch y datganiad SQL canlynol:
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)
Nesaf rydym yn defnyddio’r datganiad GRŴP YN ÔL i grwpio’r tabl data yn ôl enw a chyfrif faint o gofnodion sydd gan bob person:
mysql> SELECT name, COUNT(*) FROM employee_tbl GROUP BY name; +--------+----------+ | name | COUNT(*) | +--------+----------+ | 小丽 | 1 | | 小明 | 3 | | 小王 | 2 | +--------+----------+ 3 rows in set (0.01 sec)
Defnyddiwch GYDA ROLLUP
Gall GYDA ROLLUP weithredu'r un ystadegau (SUM, AVG, COUNT...) ar sail ystadegau wedi'u grwpio.
Er enghraifft, rydym yn grwpio'r tabl data uchod yn ôl enw, ac yna'n cyfrif y nifer o weithiau y mae pob person wedi mewngofnodi:
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)
Mae'r cofnod NULL yn cynrychioli nifer y mewngofnodi ar gyfer pawb.
Gallwn ddefnyddio cyfuniad i osod enw a all gymryd lle cystrawen NUll, coalesce:
select coalesce(a,b,c);
Disgrifiad o'r paramedr: os yw a==null, dewiswch b; os b==null, dewiswch c; os yw a!=null, dewiswch a; os yw abc yn null, dychwelwch null (diystyr).
Yn yr enghraifft ganlynol os yw'r enw'n wag rydym yn defnyddio'r cyfanswm yn lle hynny:
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)
Blog Chen Weiliang Gobeithio ( https://www.chenweiliang.com/ ) a rennir "Grŵp swm MySQL yn ôl defnydd? Mae Eglurhad Manwl o Grŵp fesul Cyfrif yng Nghronfa Ddata MySQL" yn ddefnyddiol i chi.
Croeso i chi rannu dolen yr erthygl hon:https://www.chenweiliang.com/cwl-477.html
Croeso i sianel Telegram o blog Chen Weiliang i gael y diweddariadau diweddaraf!
📚 Mae'r canllaw hwn yn cynnwys gwerth enfawr, 🌟Mae hwn yn gyfle prin, peidiwch â'i golli! ⏰⌛💨
Rhannwch a hoffwch os hoffech chi!
Eich rhannu a'ch hoff bethau yw ein cymhelliant parhaus!