Súčtová skupina MySQL podľa použitia? Podrobné vysvetlenie skupiny podľa počtu v databáze MySQL

Ako používať MySQL SUM GROUP BY? Podrobné vysvetlenie funkcie GROUP BY COUNT v databáze MySQL.

MySQL príkaz GROUP BY

Príkaz GROUP BY zoskupuje množinu výsledkov na základe jedného alebo viacerých stĺpcov.

Na zoskupenom stĺpci môžeme použiť funkcie COUNT, SUM, AVG atď.

GROUP BY syntax

SELECT column_name, function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;

Príklad demonštrácie

V príklade v tejto kapitole je použitá nasledujúca tabuľková štruktúra a údaje, pred použitím môžeme importovať nasledujúce údaje do databázy.

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;

Po úspešnom importe vykonajte nasledujúci príkaz 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)

Ďalej použijeme príkaz GROUP BY na zoskupenie tabuľky údajov podľa názvu a spočítanie, koľko záznamov má každá osoba:

mysql> SELECT name, COUNT(*) FROM   employee_tbl GROUP BY name;
+--------+----------+
| name   | COUNT(*) |
+--------+----------+
| 小丽 |        1 |
| 小明 |        3 |
| 小王 |        2 |
+--------+----------+
3 rows in set (0.01 sec)

Použite S ROLLUP

WITH ROLLUP dokáže implementovať rovnaké štatistiky (SUM, AVG, COUNT...) na základe zoskupených štatistík.

Vyššie uvedenú tabuľku údajov napríklad zoskupíme podľa názvu a potom spočítame, koľkokrát sa každá osoba prihlásila:

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)

Záznam NULL predstavuje počet prihlásení pre každého.

Môžeme použiť koalesce na nastavenie názvu, ktorý môže nahradiť NUll, zlúčiť syntax:

select coalesce(a,b,c);

Popis parametra: ak a==null, vyberte b; ak b==null, vyberte c; ak a!=null, vyberte a; ak je abc null, vráťte hodnotu null (bezvýznamné).

V nasledujúcom príklade, ak je názov prázdny, použijeme namiesto neho súčet:

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)

发表 评论

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

Prejdite na začiatok