MySQL Summa grupp efter användning?MySQL-databasDetaljerad förklaring av grupp efter antal
MySQL GROUP BY-sats
GROUP BY-satsen grupperar resultatuppsättningen baserat på en eller flera kolumner.
På den grupperade kolumnen kan vi använda funktionerna COUNT, SUM, AVG, etc..
GROUP BY syntax
SELECT column_name, function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name;
Exempel demonstration
I exemplet i detta kapitel används följande tabellstruktur och data. Innan vi använder dem kan vi importera följande data till 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 har lyckats, kör du följande SQL-sats:
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)
Därefter använder vi GROUP BY-satsen för att gruppera datatabellen efter namn och räkna hur många poster varje person har:
mysql> SELECT name, COUNT(*) FROM employee_tbl GROUP BY name; +--------+----------+ | name | COUNT(*) | +--------+----------+ | 小丽 | 1 | | 小明 | 3 | | 小王 | 2 | +--------+----------+ 3 rows in set (0.01 sec)
Använd MED ROLLUP
WITH ROLLUP kan implementera samma statistik (SUM, AVG, COUNT...) på basis av grupperad statistik.
Till exempel grupperar vi ovanstående datatabell efter namn och räknar sedan antalet gånger varje person har loggat in:
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 representerar antalet inloggningar för alla.
Vi kan använda coalesce för att ställa in ett namn som kan ersätta NUll, coalesce syntax:
select coalesce(a,b,c);
Parameterbeskrivning: om a==null, välj b; om b==null, välj c; om a!=null, välj a; om abc är null, returnera null (meningslöst).
Om namnet är tomt i följande exempel använder vi summan istället:
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 blogg ( https://www.chenweiliang.com/ ) delade "MySQL summagrupp efter användning? Detaljerad förklaring av grupp efter antal i MySQL-databasen" är till hjälp för dig.
Välkommen att dela länken till denna artikel:https://www.chenweiliang.com/cwl-477.html
Välkommen till Telegram-kanalen på Chen Weiliangs blogg för att få de senaste uppdateringarna!
📚 Den här guiden innehåller ett enormt värde, 🌟Detta är ett sällsynt tillfälle, missa inte det! ⏰⌛💨
Dela och gilla om du vill!
Dina delning och likes är vår ständiga motivation!