Група сум 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)

Використовуйте WITH 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 у блозі Чень Вейляна, щоб отримувати останні оновлення!

🔔 Станьте першим, хто отримає цінний «Посібник із використання інструменту штучного інтелекту маркетингу контенту ChatGPT» у верхньому каталозі каналу! 🌟
📚 Цей посібник має величезну цінність. 🌟Це рідкісна можливість, не пропустіть її! ⏰⌛💨
Поділіться та вподобайте, якщо вам подобається!
Ваші публікації та лайки є нашою постійною мотивацією!

 

发表 评论

Ваша електронна адреса не буде опублікована. 必填 项 已 用 * Етикетка

прокрутіть наверх