MySQL-somgroep volgens gebruik? Gedetailleerde verduideliking van groep volgens telling in MySQL-databasis

MySQL Som groepeer volgens gebruik?MySQL databasisGedetailleerde verduideliking van groep volgens telling

MySQL GROUP BY stelling

Die GROUP BY-stelling groepeer die resultaatstel gebaseer op een of meer kolomme.

Op die gegroepeerde kolom kan ons COUNT, SOM, AVG, ens. funksies gebruik.

GROEP DEUR sintaksis

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

Voorbeeld demonstrasie

Die voorbeeld in hierdie hoofstuk gebruik die volgende tabelstruktuur en data.Voordat ons dit gebruik, kan ons die volgende data in die databasis invoer.

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;

Nadat die invoer suksesvol is, voer die volgende SQL-stelling uit:

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)

Vervolgens gebruik ons ​​die GROUP BY-stelling om die datatabel volgens naam te groepeer en tel hoeveel rekords elke persoon het:

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

Gebruik MET ROLLUP

MET ROLLUP kan dieselfde statistieke (SOM, AVG, COUNT...) implementeer op die basis van gegroepeerde statistieke.

Ons groepeer byvoorbeeld die bogenoemde datatabel volgens naam, en tel dan die aantal kere wat elke persoon aangemeld het:

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)

Die rekord NULL verteenwoordig die aantal aanmeldings vir almal.

Ons kan coalesce gebruik om 'n naam te stel wat NUll kan vervang, coalesce sintaksis:

select coalesce(a,b,c);

Parameterbeskrywing: as a==nul, kies b; as b==nul, kies c; as a!=nul, kies a; as abc nul is, gee nul (betekenisloos) terug.

In die volgende voorbeeld as die naam leeg is, gebruik ons ​​eerder die totaal:

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)

Hoop Chen Weiliang Blog ( https://www.chenweiliang.com/ ) gedeel "MySQL-somgroep volgens gebruik? Gedetailleerde verduideliking van groep volgens tel in MySQL-databasis" is nuttig vir jou.

Welkom om die skakel van hierdie artikel te deel:https://www.chenweiliang.com/cwl-477.html

Welkom by die Telegram-kanaal van Chen Weiliang se blog om die nuutste opdaterings te kry!

🔔 Wees die eerste om die waardevolle "ChatGPT Content Marketing AI Tool Usage Guide" in die kanaal se topgids te kry! 🌟
📚 Hierdie gids bevat groot waarde, 🌟Dit is 'n seldsame geleentheid, moet dit nie misloop nie! ⏰⌛💨
Share en like as jy wil!
Jou deel en laaiks is ons voortdurende motivering!

 

发表 评论

U e-posadres sal nie gepubliseer word nie. Vereiste velde word gebruik * Etiket

blaai na bo