Grup jumlah MySQL berdasarkan penggunaan? Penjelasan rinci tentang grup dengan jumlah di database MySQL

MySQL Jumlahkan grup berdasarkan penggunaan?database MySQLPenjelasan terperinci tentang grup berdasarkan hitungan

Pernyataan MySQL GROUP BY

Pernyataan GROUP BY mengelompokkan kumpulan hasil berdasarkan satu atau lebih kolom.

Pada kolom grouped kita dapat menggunakan fungsi COUNT, SUM, AVG, dll.

sintaks GROUP BY

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 tabel dan data berikut Sebelum menggunakannya, kita dapat mengimpor data berikut ke dalam 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;

Setelah impor berhasil, jalankan 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)

Selanjutnya kita menggunakan pernyataan GROUP BY untuk mengelompokkan tabel data berdasarkan nama dan menghitung berapa banyak record yang dimiliki 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 DENGAN ROLLUP

WITH ROLLUP dapat menerapkan statistik yang sama (SUM, AVG, COUNT...) berdasarkan statistik yang dikelompokkan.

Misalnya, kami mengelompokkan tabel data di atas berdasarkan nama, lalu menghitung berapa kali setiap orang login:

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)

Catatan NULL mewakili jumlah login untuk semua orang.

Kita dapat menggunakan penggabungan untuk menetapkan nama yang dapat menggantikan NUll, menggabungkan sintaks:

select coalesce(a,b,c);

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

Dalam contoh berikut jika namanya kosong, kami menggunakan total sebagai gantinya:

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)

Harapan Chen Weiliang Blog ( https://www.chenweiliang.com/ ) membagikan "grup jumlah MySQL berdasarkan penggunaan? Penjelasan Rinci Grup berdasarkan Hitungan di Database MySQL" sangat membantu Anda.

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

Untuk mengungkap lebih banyak trik tersembunyi🔑, selamat datang untuk bergabung di saluran Telegram kami!

Bagikan dan sukai jika Anda menyukainya! Bagikan dan suka Anda adalah motivasi kami yang berkelanjutan!

 

发表 评论

Alamat email Anda tidak akan dipublikasikan. 必填 项 已 用 * 标注

Gulir ke Atas