Skupina vsote MySQL glede na uporabo? Podrobna razlaga skupine po štetju v bazi podatkov MySQL

MySQL Skupina vsote po uporabi?Baza podatkov MySQLPodrobna razlaga skupine po štetju

Izjava MySQL GROUP BY

Stavek GROUP BY združuje niz rezultatov na podlagi enega ali več stolpcev.

V združenem stolpcu lahko uporabljamo funkcije COUNT, SUM, AVG itd.

GROUP BY sintaksa

SELECT column_name, function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;

Primer demonstracije

Primer v tem poglavju uporablja naslednjo strukturo tabele in podatke.Pred uporabo lahko naslednje podatke uvozimo v bazo podatkov.

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;

Ko je uvoz uspešen, izvedite naslednji stavek 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)

Nato uporabimo stavek GROUP BY, da združimo podatkovno tabelo po imenu in preštejemo, koliko zapisov ima vsaka oseba:

mysql> SELECT name, COUNT(*) FROM   employee_tbl GROUP BY name;
+--------+----------+
| name   | COUNT(*) |
+--------+----------+
| 小丽 |        1 |
| 小明 |        3 |
| 小王 |        2 |
+--------+----------+
3 rows in set (0.01 sec)

UPORABA Z ROLLUPOM

WITH ROLLUP lahko implementira iste statistike (SUM, AVG, COUNT...) na podlagi združenih statistik.

Na primer, zgornjo podatkovno tabelo združimo po imenu in nato preštejemo, kolikokrat se je vsaka oseba prijavila:

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)

Zapis NULL predstavlja število prijav za vse.

Za nastavitev imena, ki lahko nadomesti NUll, lahko uporabimo coalesce, sintakso coalesce:

select coalesce(a,b,c);

Opis parametra: če je a==null, izberite b; če je b==null, izberite c; če je a!=null, izberite a; če je abc nič, vrnite nič (brez pomena).

V naslednjem primeru, če je ime prazno, namesto tega uporabimo skupno:

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)

Blog Hope Chen Weiliang ( https://www.chenweiliang.com/ ) v skupni rabi »Skupina vsote MySQL po uporabi? Podrobna razlaga skupine po številu v zbirki podatkov MySQL" vam je v pomoč.

Dobrodošli, da delite povezavo tega članka:https://www.chenweiliang.com/cwl-477.html

Dobrodošli na kanalu Telegram spletnega dnevnika Chena Weilianga, kjer boste prejeli najnovejše posodobitve!

🔔 Bodite prvi, ki boste prejeli dragocen »Vodnik za uporabo orodja AI za vsebinski marketing ChatGPT« v zgornjem imeniku kanala! 🌟
📚 Ta vodnik ima ogromno vrednosti, 🌟To je redka priložnost, ne zamudite je! ⏰⌛💨
Delite in všečkajte, če vam je všeč!
Vaše deljenje in všečki so naša stalna motivacija!

 

发表 评论

Vaš e-poštni naslov ne bo objavljen. 必填 项 已 用 * Oznaka

滚动 到 顶部