Součtová skupina MySQL podle použití? Podrobné vysvětlení skupiny podle počtu v databázi MySQL

Jak používat MySQL SUM GROUP BY? Podrobný popis funkce GROUP BY COUNT v databázi MySQL.

Příkaz MySQL GROUP BY

Příkaz GROUP BY seskupuje sadu výsledků na základě jednoho nebo více sloupců.

Na seskupeném sloupci můžeme použít funkce COUNT, SUM, AVG atd.

GROUP BY syntaxe

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

Příklad demonstrace

V příkladu v této kapitole je použita následující struktura tabulek a dat Před použitím můžeme importovat následující data do databáze.

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 úspěšném importu proveďte následující pří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)

Dále použijeme příkaz GROUP BY k seskupení datové tabulky podle názvu a spočítáme, kolik záznamů 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žijte S ROLLUP

WITH ROLLUP může implementovat stejné statistiky (SUM, AVG, COUNT...) na základě seskupených statistik.

Například seskupujeme výše uvedenou datovou tabulku podle názvu a poté spočítáme, kolikrát se každá osoba přihlá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 představuje počet přihlášení pro každého.

Můžeme použít coalesce k nastavení názvu, který může nahradit NUll, sloučit syntaxi:

select coalesce(a,b,c);

Popis parametru: pokud a==null, zvolte b; pokud b==null, zvolte c; pokud a!=null, vyberte a; pokud je abc null, vraťte hodnotu null (nemá smysl).

Pokud je v následujícím příkladu název prázdný, použijeme místo něj souč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)

Doufejme, že vám bude užitečný článek „Používání funkce SUM GROUP BY v MySQL? Podrobné vysvětlení funkce GROUP BY COUNT v databázi MySQL“, který sdílel Chen Weiliang na blogu ( https://www.chenweiliang.com/ ).

Neváhejte a sdílejte odkaz na tento článek: https://www.chenweiliang.com/cwl-477.html

Chcete-li odemknout další skryté triky🔑, připojte se k našemu telegramovému kanálu!

Sdílejte a lajkujte, pokud se vám to líbí! Vaše sdílení a lajky jsou naší další motivací!

 

发表 评论

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

Přejděte na začátek