Гурӯҳи маблағи MySQL аз рӯи истифода? Шарҳи муфассали гурӯҳ аз рӯи ҳисоб дар пойгоҳи додаҳои MySQL

Чӣ тавр аз функсияи 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

Барои кушодани ҳилаҳои пинҳонии бештар🔑, хуш омадед ба канали мо дар Telegram ҳамроҳ шавед!

Поделиться ва лайк, агар ба шумо писанд омад! Саҳмияҳо ва лайкҳои шумо ангезаи доимии мо мебошанд!

 

发表 评论

您的邮箱地址不会被公开。必填项已用*标注

Акс аз бойгонӣ