دليل المادة
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 عدد عمليات تسجيل الدخول للجميع.
يمكننا استخدام الاندماج لتعيين اسم يمكن أن يحل محل NUll ، بناء الجملة:
select coalesce(a,b,c);
وصف المعلمة: إذا كانت القيمة == خالية ، فاختر b ؛ وإذا كانت b == خالية ، فاختر c ؛ وإذا كانت a! = خالية ، فاختر a ؛ إذا كانت abc خالية ، فقم بإرجاع قيمة خالية (لا معنى لها).
في المثال التالي ، إذا كان الاسم فارغًا ، فإننا نستخدم المجموع بدلاً من ذلك:
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
