სტატიების დირექტორია
MySQL ჯამი ჯგუფი გამოყენების მიხედვით?MySQL მონაცემთა ბაზაჯგუფის დეტალური ახსნა დათვლის მიხედვით
MySQL GROUP BY განცხადება
GROUP BY განცხადება აჯგუფებს შედეგების კომპლექტს ერთი ან მეტი სვეტის საფუძველზე.
დაჯგუფებულ სვეტზე შეგვიძლია გამოვიყენოთ COUNT, SUM, AVG და ა.შ. ფუნქციები.
ჯგუფი სინტაქსის მიხედვით
SELECT column_name, function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name;
მაგალითი დემონსტრირება
ამ თავში მოცემული მაგალითი იყენებს ცხრილის შემდეგ სტრუქტურას და მონაცემებს, მის გამოყენებამდე შეგვიძლია შემდეგი მონაცემების იმპორტირება მონაცემთა ბაზაში.
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;
იმპორტის წარმატებით დასრულების შემდეგ, შეასრულეთ შემდეგი 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)
შემდეგ ჩვენ ვიყენებთ GROUP BY განცხადებას, რათა დავაჯგუფოთ მონაცემთა ცხრილი სახელის მიხედვით და დავთვალოთ რამდენი ჩანაწერი აქვს თითოეულ ადამიანს:
mysql> SELECT name, COUNT(*) FROM employee_tbl GROUP BY name; +--------+----------+ | name | COUNT(*) | +--------+----------+ | 小丽 | 1 | | 小明 | 3 | | 小王 | 2 | +--------+----------+ 3 rows in set (0.01 sec)
გამოყენება ROLLUP-ით
WITH ROLLUP-ს შეუძლია იგივე სტატისტიკის (SUM, AVG, COUNT...) განხორციელება დაჯგუფებული სტატისტიკის საფუძველზე.
მაგალითად, ჩვენ ვაჯგუფებთ ზემოთ მოცემულ მონაცემთა ცხრილს სახელების მიხედვით და შემდეგ ვითვლით რამდენჯერ შემოვიდა თითოეული ადამიანი:
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 წარმოადგენს შესვლის რაოდენობას ყველასთვის.
ჩვენ შეგვიძლია გამოვიყენოთ coalesce სახელის დასაყენებლად, რომელსაც შეუძლია შეცვალოს NUll, გაერთიანების სინტაქსი:
select coalesce(a,b,c);
პარამეტრის აღწერა: თუ a==null, აირჩიეთ b; თუ b==null აირჩიეთ c; თუ a!=null აირჩიეთ a; თუ abc არის null, დააბრუნეთ null (უაზრო).
შემდეგ მაგალითში, თუ სახელი ცარიელია, ამის ნაცვლად ვიყენებთ ჯამს:
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)
იმედი ჩენ ვეილიანგის ბლოგი ( https://www.chenweiliang.com/ ) გააზიარა "MySQL ჯამის ჯგუფი გამოყენების მიხედვით? დაწვრილებითი ახსნა ჯგუფის დათვლის მიხედვით MySQL მონაცემთა ბაზაში" სასარგებლოა თქვენთვის.
კეთილი იყოს თქვენი მობრძანება ამ სტატიის ბმულის გასაზიარებლად:https://www.chenweiliang.com/cwl-477.html
მეტი ფარული ხრიკის გასახსნელად🔑, კეთილი იყოს თქვენი მობრძანება ჩვენს Telegram არხზე!
გააზიარეთ და მოიწონეთ თუ მოგეწონათ! თქვენი გაზიარებები და მოწონებები ჩვენი მუდმივი მოტივაციაა!