MySQL-somgroep op gebruik? Gedetailleerde uitleg van groep op aantal in MySQL-database

MySQL Groep optellen naar gebruik?MySQL-databaseGedetailleerde uitleg van groep per telling

MySQL GROUP BY-instructie

De instructie GROUP BY groepeert de resultatenset op basis van een of meer kolommen.

Op de gegroepeerde kolom kunnen we COUNT, SUM, AVG, etc. functies gebruiken.

GROEP OP syntaxis

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

Voorbeeld demonstratie

Het voorbeeld in dit hoofdstuk gebruikt de volgende tabelstructuur en gegevens. Voordat we deze gebruiken, kunnen we de volgende gegevens in de database importeren.

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 het importeren is gelukt, voert u de volgende SQL-instructie 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 gebruiken we de GROUP BY-instructie om de gegevenstabel op naam te groeperen en te tellen hoeveel records elke persoon heeft:

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

WITH ROLLUP kan dezelfde statistieken (SUM, AVG, COUNT...) implementeren op basis van gegroepeerde statistieken.

We groeperen bijvoorbeeld de bovenstaande gegevenstabel op naam en tellen vervolgens het aantal keren dat elke persoon heeft ingelogd:

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)

Het record NULL vertegenwoordigt het aantal aanmeldingen voor iedereen.

We kunnen coalesce gebruiken om een ​​naam in te stellen die NUll, coalesce-syntaxis kan vervangen:

select coalesce(a,b,c);

Parameterbeschrijving: als a==null, kies b; als b==null, kies c; als a!=null, kies a; als abc null is, retourneer null (zonder betekenis).

Als de naam in het volgende voorbeeld leeg is, gebruiken we in plaats daarvan het 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/ ) gedeelde "MySQL-somgroep op gebruik? Gedetailleerde uitleg van Group by Count in MySQL Database" is nuttig voor u.

Welkom om de link van dit artikel te delen:https://www.chenweiliang.com/cwl-477.html

Welkom op het Telegram-kanaal van Chen Weiliang's blog voor de laatste updates!

🔔 Wees de eerste die de waardevolle "ChatGPT Content Marketing AI Tool Usage Guide" in de bovenste kanaaldirectory ontvangt! 🌟
📚 Deze gids bevat enorme waarde, 🌟Dit is een zeldzame kans, mis hem niet! ⏰⌛💨
Deel en like als je wilt!
Uw delen en likes zijn onze voortdurende motivatie!

 

发表 评论

Uw e-mailadres wordt niet gepubliceerd. 必填 项 已 用 * 标注

scroll naar boven