Gruppo di somma MySQL in base all'utilizzo? Spiegazione dettagliata del raggruppamento per conteggio nel database MySQL

MySQL Somma gruppo per utilizzo?Database MySQLSpiegazione dettagliata del gruppo per conteggio

Istruzione MySQL GROUP BY

L'istruzione GROUP BY raggruppa il set di risultati in base a una o più colonne.

Sulla colonna raggruppata possiamo utilizzare le funzioni COUNT, SUM, AVG, ecc.

GROUP BY sintassi

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

Esempio di dimostrazione

L'esempio in questo capitolo utilizza la struttura della tabella ei dati seguenti.Prima di utilizzarlo, possiamo importare i seguenti dati nel database.

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;

Dopo che l'importazione è riuscita, eseguire la seguente istruzione 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)

Quindi utilizziamo l'istruzione GROUP BY per raggruppare la tabella di dati per nome e contare quanti record ha ogni persona:

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

Utilizzare CON ROLLUP

CON ROLLUP puoi implementare le stesse statistiche (SUM, AVG, COUNT...) sulla base di statistiche raggruppate.

Ad esempio, raggruppiamo la tabella di dati sopra per nome, quindi contiamo il numero di volte in cui ogni persona ha effettuato l'accesso:

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)

Il record NULL rappresenta il numero di accessi per tutti.

Possiamo usare coalesce per impostare un nome che può sostituire NUll, sintassi coalescente:

select coalesce(a,b,c);

Descrizione parametro: se a==null, scegli b; se b==null, scegli c; se a!=null, scegli a; se abc è null, restituisce null (senza significato).

Nell'esempio seguente se il nome è vuoto utilizziamo invece il totale:

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)

Speranza Chen Weiliang Blog ( https://www.chenweiliang.com/ ) ha condiviso "Gruppo di somma MySQL in base all'utilizzo? Spiegazione dettagliata del gruppo per conteggio nel database MySQL" ti è utile.

Benvenuti a condividere il link di questo articolo:https://www.chenweiliang.com/cwl-477.html

Benvenuto nel canale Telegram del blog di Chen Weiliang per ricevere gli ultimi aggiornamenti!

🔔 Sii il primo a ricevere la preziosa "Guida all'utilizzo dello strumento AI di marketing dei contenuti ChatGPT" nella directory principale del canale! 🌟
📚 Questa guida contiene un valore enorme, 🌟Questa è un'opportunità rara, non perderla! ⏰⌛💨
Condividi e metti mi piace se ti va!
La tua condivisione e i tuoi like sono la nostra continua motivazione!

 

发表 评论

L'indirizzo email non verrà pubblicato. 必填 项 已 用 * 标注

滚动 到 顶部