MySQL Summegrupp no ​​Benotzung? Detailléiert Erklärung vu Grupp no ​​Grof an MySQL Datebank

MySQL Wéi benotzen d'Zommgrupp duerch?MySQL DatebankDetailléiert Erklärung vum Grupp no ​​Grof an

MySQL GROUP BY Ausso

D'GROUP BY Ausso gruppéiert e Resultatset op Basis vun enger oder méi Kolonnen.

Mir kënnen Funktiounen wéi COUNT, SUM, AVG, asw op gruppéierte Kolonnen benotzen.

GROUP BY Syntax

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

Beispill Manifestatioun

D'Beispiller an dësem Kapitel benotzen déi folgend Tabellstruktur an Donnéeën: Virum Gebrauch kënne mir déi folgend Daten an d'Datebank importéieren.

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;

Nodeems den Import erfollegräich ass, fuert déi folgend SQL Ausso aus:

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)

Als nächst benotze mir d'GROUP BY Ausso fir d'Datentabell mam Numm ze gruppéieren an ze zielen wéivill records all Persoun huet:

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

Benotzt MAT ROLLUP

MAT ROLLUP kann déi selwecht Statistiken Leeschtunge (SUM, AVG, COUNT ...) baséiert op gruppéiert statistesch Donnéeën.

Zum Beispill gruppéiere mir déi uewe genannten Datetabelle mam Numm, an zielen dann d'Zuel vun de Mol déi all Persoun sech aloggen:

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)

De Rekord NULL weist d'Zuel vun de Login fir jiddereen un.

Mir kënne coalesce benotzen fir en Numm ze setzen deen d'NUll ersetzen kann. coalesce Syntax:

select coalesce(a,b,c);

Parameterbeschreiwung: Wann a==null, wielt b; wann b==null, wielt c; wann a!=null, wielt a; wann abc béid null sinn, gitt null (sënnlos) zréck.

Am folgende Beispill, wann den Numm eidel ass, benotze mir amplaz den Total:

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)

Hope Chen Weiliang Blog ( https://www.chenweiliang.com/ ) gedeelt "MySQL Summegrupp no ​​Benotzung?" Detailléiert Erklärung vu Grupp no ​​Grof an der MySQL Datebank" wäert Iech hëllefräich sinn.

Wëllkomm de Link vun dësem Artikel ze deelen:https://www.chenweiliang.com/cwl-477.html

Wëllkomm op dem Telegram Kanal vum Chen Weiliang säi Blog fir déi lescht Updates ze kréien!

🔔 Gitt deen Éischten dee wäertvollen "ChatGPT Content Marketing AI Tool Usage Guide" am Kanal Top Verzeechnes ze kréien! 🌟
📚 Dëse Guide enthält en enorme Wäert, 🌟 Dëst ass eng selten Geleeënheet, verpasst et net! ⏰⌛💨
Deelen a liken wann dir wëllt!
Är Deelen a Likes sinn eis kontinuéierlech Motivatioun!

 

Comments

Är E-Mail Adress gëtt net verëffentlecht. Néideg Felder gi benotzt * Etikett

scroll no uewen