Справочник на статиите
MySQL Сумиране на група по използване?MySQL база данниПодробно обяснение на група по брой
Изявление MySQL GROUP BY
Операторът GROUP BY групира резултатния набор въз основа на една или повече колони.
В групираната колона можем да използваме функции COUNT, SUM, AVG и др.
GROUP BY синтаксис
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
WITH 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, изберете c; ако a!=null, изберете a; ако abc е null, върнете null (безсмислено).
В следния пример, ако името е празно, вместо това използваме общата сума:
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 ( https://www.chenweiliang.com/ ) сподели „Група суми на MySQL по използване? Подробно обяснение на групиране по брой в MySQL база данни" е полезно за вас.
Добре дошли да споделите връзката към тази статия:https://www.chenweiliang.com/cwl-477.html
Добре дошли в канала на Telegram в блога на Chen Weiliang, за да получите най-новите актуализации!
📚 Това ръководство съдържа огромна стойност, 🌟Това е рядка възможност, не я пропускайте! ⏰⌛💨
Споделете и харесайте, ако ви харесва!
Вашите споделяния и харесвания са нашата постоянна мотивация!