Kumpulan jumlah MySQL mengikut penggunaan? Penjelasan terperinci kumpulan mengikut kiraan dalam pangkalan data MySQL

MySQL Jumlahkan kumpulan mengikut penggunaan?pangkalan data MySQLPenjelasan terperinci kumpulan mengikut kiraan

MySQL GROUP BY pernyataan

Penyata GROUP BY mengumpulkan set hasil berdasarkan satu atau lebih lajur.

Pada lajur berkumpulan kita boleh menggunakan fungsi COUNT, SUM, AVG, dsb.

KUMPULAN MENGIKUT sintaks

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

Contoh demonstrasi

Contoh dalam bab ini menggunakan struktur jadual dan data berikut.Sebelum menggunakannya, kita boleh mengimport data berikut ke dalam pangkalan data.

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;

Selepas import berjaya, laksanakan pernyataan SQL berikut:

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)

Seterusnya kami menggunakan pernyataan GROUP BY untuk mengumpulkan jadual data mengikut nama dan mengira bilangan rekod setiap orang:

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

Gunakan WITH ROLLUP

WITH ROLLUP boleh melaksanakan statistik yang sama (SUM, AVG, COUNT...) berdasarkan statistik terkumpul.

Sebagai contoh, kami mengumpulkan jadual data di atas mengikut nama, dan kemudian mengira bilangan kali setiap orang telah log masuk:

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)

Rekod NULL mewakili bilangan log masuk untuk semua orang.

Kita boleh menggunakan coalesce untuk menetapkan nama yang boleh menggantikan NUll, coalesce syntax:

select coalesce(a,b,c);

Perihalan parameter: jika a==null, pilih b; jika b==null, pilih c; jika a!=null, pilih a; jika abc adalah null, kembalikan null (tidak bermakna).

Dalam contoh berikut jika nama kosong, kami menggunakan jumlah sebaliknya:

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)

Blog Harapan Chen Weiliang ( https://www.chenweiliang.com/ ) berkongsi "Kumpulan jumlah MySQL mengikut penggunaan? Penjelasan Terperinci Kumpulan mengikut Kiraan dalam Pangkalan Data MySQL" berguna kepada anda.

Selamat datang untuk berkongsi pautan artikel ini:https://www.chenweiliang.com/cwl-477.html

Selamat datang ke saluran Telegram blog Chen Weiliang untuk mendapatkan kemas kini terkini!

🔔 Jadilah yang pertama untuk mendapatkan "Panduan Penggunaan Alat AI Pemasaran Kandungan ChatGPT" yang berharga dalam direktori teratas saluran! 🌟
📚 Panduan ini mengandungi nilai yang besar, 🌟Ini adalah peluang yang jarang berlaku, jangan lepaskan! ⏰⌛💨
Share dan like jika anda suka!
Perkongsian dan suka anda adalah motivasi berterusan kami!

 

发表 评论

Alamat e-mel anda tidak akan diterbitkan. 必填 项 已 用 * 标注

tatal ke atas