MySQL қосындысының тобы қолданылуы бойынша? MySQL дерекқорындағы санау бойынша топтың толық түсіндірмесі

MySQL Қолданылуы бойынша қосындылар тобы?MySQL деректер қорыСанақ бойынша топ туралы толық түсініктеме

MySQL GROUP BY операторы

GROUP BY операторы нәтиже жиынын бір немесе бірнеше бағандар негізінде топтайды.

Топтастырылған бағанда COUNT, SUM, AVG және т.б. функцияларын пайдалана аламыз.

Синтаксис бойынша GROUP

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, біріктіру синтаксисін алмастыра алатын атауды орнату үшін coalesce пайдалана аламыз:

select coalesce(a,b,c);

Параметрдің сипаттамасы: егер a==null болса, b таңдаңыз; егер b==null болса, c таңдаңыз; егер a!=null болса, а таңдаңыз; 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

Соңғы жаңартуларды алу үшін Чен Вэйлян блогының Telegram арнасына қош келдіңіз!

🔔 Арнаның жоғарғы каталогындағы құнды "ChatGPT мазмұнды маркетингтік AI құралын пайдалану нұсқаулығын" бірінші болып алыңыз! 🌟
📚 Бұл нұсқаулықта үлкен құндылық бар, 🌟Бұл сирек мүмкіндік, оны жіберіп алмаңыз! ⏰⌛💨
Ұнаса лайк басып, бөлісіңіз!
Сіздің бөлісулеріңіз бен лайктарыңыз - біздің үздіксіз мотивациямыз!

 

Пікірлер

Сіздің электрондық пошта мекен-жайыңыз жарияланбайды. 必填 项 已 用 * 标注

жоғарыға жылжытыңыз