MySQL нийлбэрийн бүлгийг хэрэглээгээр нь ялгах уу? MySQL мэдээллийн сан дахь тоогоор бүлгийн дэлгэрэнгүй тайлбар

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)

WITH 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, coalesce синтаксийг орлох нэрийг тохируулах боломжтой:

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)

Hope Chen Weiliang блог ( https://www.chenweiliang.com/ ) хуваалцсан "MySQL нийлбэрийн бүлгийг хэрэглээгээр нь юу? MySQL мэдээллийн сан дахь тоогоор бүлгийн дэлгэрэнгүй тайлбар" нь танд тустай.

Энэ нийтлэлийн холбоосыг хуваалцахад тавтай морилно уу:https://www.chenweiliang.com/cwl-477.html

Чен Вэйляны блогын Telegram сувагт тавтай морил, хамгийн сүүлийн үеийн мэдээг аваарай!

🔔 Сувгийн шилдэг лавлахаас "ChatGPT Content Marketing AI Tool Usage Guide"-г хамгийн түрүүнд аваарай! 🌟
📚 Энэхүү гарын авлага нь асар их үнэ цэнийг агуулсан, 🌟Энэ бол ховор боломж, бүү алдаарай! ⏰⌛💨
Хэрэв танд таалагдвал лайк дарж, хуваалцаарай!
Таны хуваалцах, дуртай зүйл бол бидний байнгын урам зориг юм!

 

发表 评论

Таны имэйл хаяг нийтлэгдэхгүй. 必填 项 已 用 дээр ажиллаж байна * 标注

滚动 到 顶部