Artikulu direktorioa
MySQL Taldea batuketa erabileraren arabera?MySQL datu-baseaTaldearen azalpen zehatza zenbaketaren arabera
MySQL GROUP BY instrukzioa
GROUP BY adierazpenak zutabe batean edo gehiagotan oinarrituta taldekatzen du emaitza multzoa.
Taldekako zutabean ZENBATU, BURUZ, BATUZ, etab. funtzioak erabil ditzakegu.
GROUP BY sintaxia
SELECT column_name, function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name;
Adibide erakustaldia
Kapitulu honetako adibideak taularen egitura eta datu hauek erabiltzen ditu Erabili aurretik, datu hauek datu-basera inporta ditzakegu.
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;
Inportazioa arrakastatsua izan ondoren, exekutatu SQL instrukzio hau:
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)
Ondoren, GROUP BY adierazpena erabiltzen dugu datu-taula izenaren arabera taldekatzeko eta zenbat erregistro dituen pertsona bakoitzak:
mysql> SELECT name, COUNT(*) FROM employee_tbl GROUP BY name; +--------+----------+ | name | COUNT(*) | +--------+----------+ | 小丽 | 1 | | 小明 | 3 | | 小王 | 2 | +--------+----------+ 3 rows in set (0.01 sec)
Erabili ROLLUPAREKIN
WITH ROLLUP-ek estatistika berdinak (SUM, AVG, COUNT...) inplementa ditzake taldekako estatistiketan oinarrituta.
Adibidez, goiko datu-taula izenaren arabera taldekatzen dugu, eta gero pertsona bakoitzak saioa hasi duen kopurua zenbatzen dugu:
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)
NULL erregistroak guztientzako saio-hasiera kopurua adierazten du.
Coalesce erabil dezakegu NUll, coalesce sintaxia ordezka dezakeen izen bat ezartzeko:
select coalesce(a,b,c);
Parametroaren deskribapena: a==null bada, aukeratu b; b==null bada, aukeratu c; a!=null bada, aukeratu a; abc null bada, itzuli null (esangurarik gabekoa).
Ondorengo adibidean izena hutsik badago, guztira erabiliko dugu ordez:
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 bloga ( https://www.chenweiliang.com/ ) partekatu du "MySQL batura taldea erabileraren arabera? MySQL datu-basean Taldearen Azalpen Xehatua" lagungarria da.
Ongi etorri artikulu honen esteka partekatzera:https://www.chenweiliang.com/cwl-477.html
Ongi etorri Chen Weiliang-en blogeko Telegram kanalera azken eguneraketak jasotzeko!
📚 Gida honek balio handia du, 🌟Aukera arraroa da hau, ez galdu! ⏰⌛💨
Partekatu eta gustatzen bazaizu!
Zure partekatzea eta gustukoak dira gure etengabeko motibazioa!