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

MySQL Sčítať skupinu podľa použitia?Databáza MySQLPodrobné vysvetlenie skupiny podľa počtu

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)

Blog Hope Chen Weiliang ( https://www.chenweiliang.com/ ) zdieľaná „Súhrnná skupina MySQL podľa použitia? Podrobné vysvetlenie skupiny podľa počtu v databáze MySQL“ je pre vás užitočné.

Vitajte pri zdieľaní odkazu na tento článok:https://www.chenweiliang.com/cwl-477.html

Ak chcete odomknúť ďalšie skryté triky🔑, pridajte sa k nášmu Telegram kanálu!

Ak sa vám páči, zdieľajte a lajkujte! Vaše zdieľania a lajky sú našou neustálou motiváciou!

 

发表 评论

Vaša emailová adresa nebude zverejnená. 必填 项 已 用 * Štítok

Prejdite na začiatok