MySQL ჯამის ჯგუფი გამოყენების მიხედვით? ჯგუფის დეტალური ახსნა დათვლის მიხედვით MySQL მონაცემთა ბაზაში

როგორ გამოვიყენოთ SUM GROUP BY MySQL-ში ? GROUP BY COUNT-ის დეტალური ახსნა 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 SUM GROUP BY გამოყენება? GROUP BY COUNT-ის დეტალური ახსნა MySQL მონაცემთა ბაზაში“.

თავისუფლად გაგვიზიარეთ ამ სტატიის ბმული: https://www.chenweiliang.com/cwl-477.html

მეტი ფარული ხრიკის გასახსნელად🔑, კეთილი იყოს თქვენი მობრძანება ჩვენს Telegram არხზე!

გააზიარეთ და მოიწონეთ თუ მოგეწონათ! თქვენი გაზიარებები და მოწონებები ჩვენი მუდმივი მოტივაციაა!

 

评论

您的邮箱地址不会被公开。必填项已用*标注

გადაახვიეთ ზემოთ