MySQL zbroj grupa po upotrebi? Detaljno objašnjenje grupe po broju u MySQL bazi podataka

MySQL Zbroj grupa prema upotrebi?MySQL baza podatakaDetaljno objašnjenje grupe po broju

MySQL GROUP BY izraz

GROUP BY izraz grupiše skup rezultata na osnovu jednog ili više stupaca.

Na grupisanoj koloni 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 upotrebe 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 da grupišemo tablicu podataka po imenu i prebrojimo 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 SA ROLLUP

WITH ROLLUP može implementirati istu statistiku (SUM, AVG, COUNT...) na osnovu grupisanih statistika.

Na primjer, grupiramo gornju tablicu podataka po 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 svakoga.

Možemo koristiti koalesce da postavimo ime koje može zamijeniti NUll, sintaksu spojiti:

select coalesce(a,b,c);

Opis parametra: ako je a==null, izaberite b; ako je b==null, izaberite c; ako je a!=null, izaberite a; ako je abc null, vratite null (besmisleno).

U sljedećem primjeru, ako je ime prazno, umjesto toga koristimo total:

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 Blog ( https://www.chenweiliang.com/ ) dijeli "MySQL zbroj grupa prema upotrebi? Detaljno objašnjenje grupe po broju u MySQL bazi podataka" vam je od pomoći.

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

Dobrodošli na Telegram kanal bloga Chen Weilianga kako biste dobili najnovije informacije!

🔔 Budite prvi koji će dobiti vrijedan "Vodič za korištenje AI alata za marketing sadržaja ChatGPT" u glavnom direktoriju kanala! 🌟
📚 Ovaj vodič ima ogromnu vrijednost, 🌟Ovo je rijetka prilika, ne propustite je! ⏰⌛💨
Podelite i lajkujte ako želite!
Vaše dijeljenje i lajkovi su naša stalna motivacija!

 

Komentari

Vaša adresa e-pošte neće biti objavljena. Koriste se obavezna polja * Oznaka

skrolujte na vrh