Artikel Directory
MySQL Sum gruppe efter brug?MySQL databaseDetaljeret forklaring af gruppe efter antal
MySQL GROUP BY-udsagn
GROUP BY-sætningen grupperer resultatsættet baseret på en eller flere kolonner.
På den grupperede kolonne kan vi bruge COUNT, SUM, AVG osv. funktioner.
GRUPPER EFTER syntaks
SELECT column_name, function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name;
Eksempel demonstration
Eksemplet i dette kapitel bruger følgende tabelstruktur og data. Inden vi bruger det, kan vi importere følgende data til databasen.
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;
Når importen er vellykket, skal du udføre følgende SQL-sætning:
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)
Dernæst bruger vi GROUP BY-sætningen til at gruppere datatabellen efter navn og tælle, hvor mange poster hver person har:
mysql> SELECT name, COUNT(*) FROM employee_tbl GROUP BY name; +--------+----------+ | name | COUNT(*) | +--------+----------+ | 小丽 | 1 | | 小明 | 3 | | 小王 | 2 | +--------+----------+ 3 rows in set (0.01 sec)
Brug MED ROLLUP
MED ROLLUP kan implementere den samme statistik (SUM, AVG, COUNT...) på basis af grupperet statistik.
For eksempel grupperer vi ovenstående datatabel efter navn og tæller derefter antallet af gange, hver person har logget ind:
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)
Posten NULL repræsenterer antallet af logins for alle.
Vi kan bruge coalesce til at sætte et navn, der kan erstatte NUll, coalesce syntaks:
select coalesce(a,b,c);
Parameterbeskrivelse: hvis a==null, vælg b; hvis b==null, vælg c; hvis a!=null, vælg a; hvis abc er null, returner null (meningsløst).
I det følgende eksempel, hvis navnet er tomt, bruger vi totalen i stedet:
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/ ) delte "MySQL sum gruppe efter brug? Detaljeret forklaring af gruppe efter antal i MySQL-databasen" er nyttig for dig.
Velkommen til at dele linket til denne artikel:https://www.chenweiliang.com/cwl-477.html
Velkommen til Telegram-kanalen på Chen Weiliangs blog for at få de seneste opdateringer!
📚 Denne guide indeholder enorm værdi, 🌟Dette er en sjælden mulighed, gå ikke glip af det! ⏰⌛💨
Del og like hvis du har lyst!
Din deling og likes er vores kontinuerlige motivation!