گروه جمع 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)

استفاده از 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، نحو ادغام شود:

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)

امیدوارم مقاله "MySQL SUM GROUP BY Usage? توضیح مفصل GROUP BY COUNT در پایگاه داده MySQL" که در وبلاگ چن ویلیانگ ( https://www.chenweiliang.com/ ) به اشتراک گذاشته شده است، برای شما مفید باشد.

لینک این مقاله را به اشتراک بگذارید: https://www.chenweiliang.com/cwl-477.html

برای کشف ترفندهای مخفی بیشتر🔑، به کانال تلگرام ما بپیوندید!

اگر دوست داشتید به اشتراک بگذارید و لایک کنید! اشتراک گذاری ها و لایک های شما انگیزه ادامه دار ماست!

 

发表 评论

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

رفته به بالا