Məqalələr kataloqu
MySQL-də SUM GROUP BY funksiyasından necə istifadə olunur ? MySQL verilənlər bazasında GROUP BY COUNT funksiyasının ətraflı izahı.
MySQL GROUP BY ifadəsi
GROUP BY ifadəsi nəticə dəstini bir və ya bir neçə sütun əsasında qruplaşdırır.
Qruplaşdırılmış sütunda biz COUNT, SUM, AVG və s. funksiyalardan istifadə edə bilərik.
Sintaksisə görə qruplaşdırın
SELECT column_name, function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name;
Nümunə nümayişi
Bu fəsildəki nümunədə aşağıdakı cədvəl strukturu və verilənləri istifadə olunur.İstifadə etməzdən əvvəl biz aşağıdakı məlumatları verilənlər bazasına idxal edə bilərik.
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;
Import uğurlu olduqdan sonra aşağıdakı SQL ifadəsini yerinə yetirin:
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 məlumat cədvəlini adla qruplaşdırmaq və hər bir şəxsin neçə qeydi olduğunu hesablamaq üçün GROUP BY ifadəsindən istifadə edirik:
mysql> SELECT name, COUNT(*) FROM employee_tbl GROUP BY name; +--------+----------+ | name | COUNT(*) | +--------+----------+ | 小丽 | 1 | | 小明 | 3 | | 小王 | 2 | +--------+----------+ 3 rows in set (0.01 sec)
TOPLAM İLƏ istifadə edin
WITH ROLLUP qruplaşdırılmış statistik məlumatlar əsasında eyni statistik məlumatları (SUM, AVG, COUNT...) həyata keçirə bilər.
Məsələn, yuxarıdakı məlumat cədvəlini adla qruplaşdırırıq və sonra hər bir şəxsin daxil olma sayını hesablayırıq:
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 qeydi hər kəs üçün girişlərin sayını göstərir.
NUll, coalesce sintaksisini əvəz edə biləcək ad təyin etmək üçün coalesce istifadə edə bilərik:
select coalesce(a,b,c);
Parametr təsviri: a==null olarsa b seçin; b==nullsa c seçin; a!=nullsa a seçin; abc nulldursa, null (mənasız) qaytarın.
Aşağıdakı nümunədə ad boşdursa, bunun əvəzinə cəmi istifadə edirik:
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)
Ümid edirik ki, Chen Weiliang-ın bloqunda ( https://www.chenweiliang.com/ ) paylaşılan "MySQL SUM QRUP USATION? MySQL Verilənlər Bazasında QRUP BY COUNT-un ətraflı izahı" məqaləsi sizə faydalı olacaq.
Bu məqalənin linkini paylaşmaqdan çəkinməyin: https://www.chenweiliang.com/cwl-477.html
