Kullanıma göre MySQL toplamı grubu? MySQL veritabanında sayıya göre grubun ayrıntılı açıklaması

MySQL Kullanıma göre toplam grup?MySQL veritabanıSayıya göre grubun ayrıntılı açıklaması

MySQL GROUP BY deyimi

GROUP BY ifadesi, sonuç kümesini bir veya daha fazla sütuna göre gruplandırır.

Gruplandırılmış sütunda COUNT, SUM, AVG vb. işlevleri kullanabiliriz.

GROUP BY sözdizimi

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

Örnek gösteri

Bu bölümdeki örnekte aşağıdaki tablo yapısı ve veriler kullanılmıştır.Kullanmadan önce aşağıdaki verileri veritabanına aktarabiliriz.

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;

İçe aktarma başarılı olduktan sonra aşağıdaki SQL deyimini yürütün:

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)

Daha sonra, veri tablosunu ada göre gruplamak ve her bir kişinin kaç kaydı olduğunu saymak için GROUP BY ifadesini kullanırız:

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

ROLLUP İLE KULLANIN

İLE ROLLUP, aynı istatistikleri (SUM, AVG, COUNT...) gruplandırılmış istatistikler temelinde uygulayabilir.

Örneğin, yukarıdaki veri tablosunu ada göre gruplandırıyoruz ve ardından her bir kişinin kaç kez oturum açtığını sayıyoruz:

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)

NULL kaydı, herkes için oturum açma sayısını temsil eder.

NUll, birleştirme sözdiziminin yerini alabilecek bir ad ayarlamak için birleştirmeyi kullanabiliriz:

select coalesce(a,b,c);

Parametre açıklaması: a==null ise b'yi seçin; b==null ise c'yi seçin; a!=null ise a'yı seçin; abc null ise null döndür (anlamsız).

Aşağıdaki örnekte, ad boşsa, bunun yerine toplamı kullanırız:

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)

Umut Chen Weiliang Blogu ( https://www.chenweiliang.com/ ) paylaşılan "Kullanıma göre MySQL toplam grubu? MySQL Veritabanında Sayıma Göre Grubun Ayrıntılı Açıklaması" size yardımcı olur.

Bu makalenin bağlantısını paylaşmaya hoş geldiniz:https://www.chenweiliang.com/cwl-477.html

En son güncellemeleri almak için Chen Weiliang'ın blogunun Telegram kanalına hoş geldiniz!

🔔 Kanalın üst dizinindeki değerli "ChatGPT İçerik Pazarlama Yapay Zeka Aracı Kullanım Kılavuzunu" alan ilk kişi olun! 🌟
📚 Bu rehber çok büyük değer içeriyor, 🌟Bu nadir bir fırsat, kaçırmayın! ⏰⌛💨
İsterseniz paylaşın ve beğenin!
Paylaşımlarınız ve beğenileriniz bizim sürekli motivasyonumuz!

 

发表 评论

E-posta hesabınız yayımlanmayacak. 必填 项 已 用 * 标注

yukarı kaydır