MySQL zbroj grupa prema korištenju? Detaljno objašnjenje grupe po broju u MySQL bazi podataka

MySQL Grupa zbroja prema upotrebi?MySQL baza podatakaDetaljno objašnjenje grupe po broju

MySQL GROUP BY izjava

Naredba GROUP BY grupira skup rezultata na temelju jednog ili više stupaca.

Na grupiranom stupcu možemo koristiti 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;

Primjer demonstracije

Primjer u ovom poglavlju koristi sljedeću strukturu tablice i podatke. Prije korištenja možemo uvesti sljedeće podatke u bazu podataka.

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;

Nakon što je uvoz uspješan, izvršite sljedeću SQL naredbu:

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)

Zatim koristimo naredbu GROUP BY za grupiranje podatkovne tablice po nazivu i prebrojavanje koliko zapisa svaka osoba ima:

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

Koristite S ROLLUP-om

WITH ROLLUP može implementirati iste statistike (SUM, AVG, COUNT...) na temelju grupiranih statistika.

Na primjer, gornju podatkovnu tablicu grupiramo prema imenu, a zatim brojimo koliko se puta svaka osoba 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 broj prijava za sve.

Možemo koristiti coalesce za postavljanje imena koje može zamijeniti NUll, coalesce sintaksu:

select coalesce(a,b,c);

Opis parametra: ako je a==null, odaberite b; ako je b==null, odaberite c; ako je a!=null, odaberite a; ako je abc null, vratite null (bez značenja).

U sljedećem primjeru ako je naziv prazan, umjesto njega koristimo ukupan iznos:

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/ ) dijeli "MySQL sum group by usage? Detaljno objašnjenje grupiranja prema broju u MySQL bazi podataka" vam može pomoći.

Dobrodošli da podijelite vezu ovog članka:https://www.chenweiliang.com/cwl-477.html

Dobro došli na Telegram kanal Chen Weiliangovog bloga da dobijete najnovija ažuriranja!

🔔 Budite prvi koji će dobiti vrijedan "Vodič za korištenje AI alata za marketing sadržaja ChatGPT" u direktoriju na vrhu kanala! 🌟
📚 Ovaj vodič ima veliku vrijednost, 🌟 Ovo je rijetka prilika, nemojte je propustiti! ⏰⌛💨
Podijelite i lajkajte ako vam se sviđa!
Vaše dijeljenje i lajkovi naša su stalna motivacija!

 

发表 评论

Vaša email adresa neće biti objavljena. Koriste se obavezna polja * Označiti

pomaknite se na vrh