Straipsnių katalogas
MySQL Kaip naudoti sumos grupę pagal?MySQL duomenų bazėIšsamus grupės paaiškinimas pagal skaičių
MySQL GROUP BY teiginys
Teiginys GROUP BY sugrupuoja rezultatų rinkinį pagal vieną ar daugiau stulpelių.
Sugrupuotuose stulpeliuose galime naudoti tokias funkcijas kaip COUNT, SUM, AVG ir kt.
GROUP BY sintaksė
SELECT column_name, function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name;
Demonstracijos pavyzdys
Šio skyriaus pavyzdžiuose naudojama tokia lentelės struktūra ir duomenys.Prieš naudodami galime importuoti šiuos duomenis į duomenų bazę.
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;
Kai importavimas bus sėkmingas, vykdykite šį SQL sakinį:
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)
Tada naudojame teiginį GROUP BY, kad sugrupuotume duomenų lentelę pagal pavadinimą ir suskaičiuotume, kiek įrašų turi kiekvienas asmuo:
mysql> SELECT name, COUNT(*) FROM employee_tbl GROUP BY name; +--------+----------+ | name | COUNT(*) | +--------+----------+ | 小丽 | 1 | | 小明 | 3 | | 小王 | 2 | +--------+----------+ 3 rows in set (0.01 sec)
Naudoti SU ROLLUP
SU ROLLUP gali atlikti tą pačią statistiką (SUM, AVG, COUNT...) remiantis sugrupuotais statistiniais duomenimis.
Pavyzdžiui, aukščiau pateiktą duomenų lentelę sugrupuojame pagal pavadinimą ir suskaičiuojame, kiek kartų kiekvienas asmuo prisijungia:
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)
Įrašas NULL nurodo visų prisijungimų skaičių.
Galime naudoti sujungimą norėdami nustatyti pavadinimą, kuris gali pakeisti NUll. coalesce sintaksė:
select coalesce(a,b,c);
Parametrų aprašymas: jei a==null, pasirinkite b; jei b==null, pasirinkite c; jei a!=null, pasirinkite a; jei abu abc yra nuliai, grąžinkite nulius (beprasmę).
Šiame pavyzdyje, jei pavadinimas tuščias, vietoj jo naudojame bendrą sumą:
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 tinklaraštis ( https://www.chenweiliang.com/ ) bendrino "MySQL sumos grupė pagal naudojimą?" Išsamus grupės paaiškinimas pagal skaičių MySQL duomenų bazėje jums bus naudingas.
Kviečiame pasidalinti šio straipsnio nuoroda:https://www.chenweiliang.com/cwl-477.html
Sveiki atvykę į Chen Weiliang tinklaraščio Telegram kanalą, kad gautumėte naujausius atnaujinimus!
📚 Šis vadovas turi didžiulę vertę, 🌟Tai reta galimybė, nepraleiskite jos! ⏰⌛💨
Dalinkitės ir like jei patiko!
Jūsų dalijimasis ir paspaudimai „Patinka“ yra mūsų nuolatinė motyvacija!