Директорияи мақолаҳо
Чӣ тавр аз функсияи SUM GROUP BY дар MySQL истифода бурдан мумкин аст? Шарҳи муфассали GROUP BY COUNT дар пойгоҳи додаҳои MySQL.
MySQL GROUP BY изҳорот
Изҳороти GROUP BY маҷмӯи натиҷаҳоро дар асоси як ё якчанд сутунҳо гурӯҳбандӣ мекунад.
Дар сутуни гурӯҳбандӣ мо метавонем функсияҳои COUNT, SUM, AVG ва ғайраро истифода барем.
ГУРУХ АЗ РУИ синтаксис
SELECT column_name, function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name;
Намунаи намоиш
Мисоли ин боб сохтор ва додаҳои ҷадвали зеринро истифода мебарад Пеш аз истифода бурдани он мо метавонем маълумоти зеринро ба базаи маълумот ворид кунем.
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;
Пас аз бомуваффақияти воридот, изҳороти зерини 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)
Минбаъд мо баёнияи GROUP BY-ро истифода мебарем, то ҷадвали маълумотро аз рӯи ном гурӯҳбандӣ кунем ва ҳисоб кунем, ки ҳар як шахс чанд сабт дорад:
mysql> SELECT name, COUNT(*) FROM employee_tbl GROUP BY name; +--------+----------+ | name | COUNT(*) | +--------+----------+ | 小丽 | 1 | | 小明 | 3 | | 小王 | 2 | +--------+----------+ 3 rows in set (0.01 sec)
Истифода БО ROLLUP
БО ROLLUP метавонад ҳамон оморро (SUM, AVG, COUNT...) дар асоси омори гурӯҳбандӣ амалӣ созад.
Масалан, мо ҷадвали маълумоти дар боло зикршударо аз рӯи ном гурӯҳбандӣ мекунем ва сипас шумораи маротибаи ҳар як шахс вориди системаро ҳисоб мекунем:
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 шумораи воридшавӣ барои ҳамаро ифода мекунад.
Мо метавонем coalesce-ро барои таъин кардани номе истифода барем, ки синтаксиси NUll, coalesce-ро иваз карда метавонад:
select coalesce(a,b,c);
Тавсифи параметр: агар a==null бошад, b-ро интихоб кунед; агар b==null бошад, в-ро интихоб кунед; агар a!=null бошад, a-ро интихоб кунед; агар abc нул бошад, нулро баргардонед (бемаъно).
Дар мисоли зерин агар ном холӣ бошад, мо ба ҷои он ҷамъро истифода мебарем:
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)
Умедворем, ки мақолаи "MySQL SUM GROUP BY Usage? Шарҳи муфассали GROUP BY COUNT дар пойгоҳи додаҳои MySQL", ки дар блоги Чен Вейлианг ( https://www.chenweiliang.com/ ) мубодила шудааст, барои шумо муфид хоҳад буд.
Озодона истиноди ин мақоларо мубодила кунед: https://www.chenweiliang.com/cwl-477.html
