Колдонуу боюнча MySQL суммасы тобу? MySQL маалымат базасында сан боюнча топтун деталдуу түшүндүрмөсү

MySQL Колдонуу боюнча топтолгон топ?MySQL маалымат базасыЭсеп боюнча топтун деталдуу түшүндүрмөсү

MySQL GROUP BY билдирүү

GROUP BY оператору натыйжалар топтомун бир же бир нече мамычанын негизинде топтойт.

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

GROUP BY синтаксис

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 синтаксисин алмаштыра турган ат коюу үчүн 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 Content Marketing AI куралын колдонуу боюнча колдонмону" биринчилерден болуп алыңыз! 🌟
📚 Бул колдонмо чоң баалуулуктарды камтыйт, 🌟Бул сейрек кездешүүчү мүмкүнчүлүк, аны өткөрүп жибербеңиз! ⏰⌛💨
Бөлүшүп, жакса лайк!
Сиздин бөлүшүүңүз жана лайктарыңыз биздин үзгүлтүксүз мотивациябыз!

 

发表 评论

Электрондук почта дарегиңиз жарыяланбайт. Милдеттүү талаалар колдонулат * 标注

өйдө сыдырыңыз