MySQL група суми по използване? Подробно обяснение на групата по брой в MySQL база данни

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, за да получите най-новите актуализации!

🔔 Бъдете първите, получили ценното „Ръководство за използване на инструмента за изкуствен интелект за маркетинг на съдържание ChatGPT“ в горната директория на канала! 🌟
📚 Това ръководство съдържа огромна стойност, 🌟Това е рядка възможност, не я пропускайте! ⏰⌛💨
Споделете и харесайте, ако ви харесва!
Вашите споделяния и харесвания са нашата постоянна мотивация!

 

发表 评论

Вашият имейл адрес няма да бъде публикуван. Използват се задължителните полета * Етикет

превъртете до върха