Mysql 分組查詢group by與with rollup
阿新 • • 發佈:2019-01-30
- 當用select*from 表名 group by ‘欄位名1’ 將選出來的內容將按照欄位1分組,其他列不盡相同,會以最前面的內容顯示:
- GROUP BY 後面可以跟多個列名,表示以多列作為分組依據:
mysql> select `name`,`date`,count(*) from `employee_tbl` group by `name`,date; +------+---------------------+----------+ | name | date | count(*) | +------+---------------------+----------+ | 小麗 | 2016-04-19 15:26:02 | 1 | | 小明 | 2016-04-04 15:26:54 | 1 | | 小明 | 2016-04-11 15:26:40 | 1 | | 小明 | 2016-04-22 15:25:33 | 1 | | 小王 | 2016-04-07 15:26:14 | 1 | | 小王 | 2016-04-20 15:25:47 | 1 | +------+---------------------+----------+ 6 rows in set (0.05 sec)
- group by 後可以跟with rollup,表示在進行分組統計的基礎上再次進行彙總統計(在每個分組下都會有統計彙總):
mysql> select*from r; +------+-----+------+ | name | cat | fish | +------+-----+------+ | 小明 | x | 1 | | 小明 | x | 2 | | 小明 | x | 4 | | 小明 | y | 2 | | 小明 | y | 2 | | 小明 | z | 1 | | 小紅 | x | 1 | | 小紅 | x | 3 | | 小紅 | y | 1 | | 小紅 | y | 2 | | 小青 | y | 3 | | 小青 | z | 2 | | 小青 | z | 1 | +------+-----+------+ 13 rows in set (0.05 sec) mysql> select name,cat,fish,count(*) from r group by name with rollup; +------+-----+------+----------+ | name | cat | fish | count(*) | +------+-----+------+----------+ | 小紅 | x | 1 | 4 | | 小明 | x | 1 | 6 | | 小青 | y | 3 | 3 | | NULL | y | 3 | 13 | +------+-----+------+----------+ 4 rows in set (0.05 sec) mysql> select name,cat,fish,count(*) from r group by name,cat with rollup; +------+------+------+----------+ | name | cat | fish | count(*) | +------+------+------+----------+ | 小紅 | x | 1 | 2 | | 小紅 | y | 1 | 2 | | 小紅 | NULL | 1 | 4 | | 小明 | x | 1 | 3 | | 小明 | y | 2 | 2 | | 小明 | z | 1 | 1 | | 小明 | NULL | 1 | 6 | | 小青 | y | 3 | 1 | | 小青 | z | 2 | 2 | | 小青 | NULL | 2 | 3 | | NULL | NULL | 2 | 13 | +------+------+------+----------+ 11 rows in set (0.06 sec) mysql> select name,cat,fish,count(*) from r group by name,cat,fish with rollup; +------+------+------+----------+ | name | cat | fish | count(*) | +------+------+------+----------+ | 小紅 | x | 1 | 1 | | 小紅 | x | 3 | 1 | | 小紅 | x | NULL | 2 | | 小紅 | y | 1 | 1 | | 小紅 | y | 2 | 1 | | 小紅 | y | NULL | 2 | | 小紅 | NULL | NULL | 4 | | 小明 | x | 1 | 1 | | 小明 | x | 2 | 1 | | 小明 | x | 4 | 1 | | 小明 | x | NULL | 3 | | 小明 | y | 2 | 2 | | 小明 | y | NULL | 2 | | 小明 | z | 1 | 1 | | 小明 | z | NULL | 1 | | 小明 | NULL | NULL | 6 | | 小青 | y | 3 | 1 | | 小青 | y | NULL | 1 | | 小青 | z | 1 | 1 | | 小青 | z | 2 | 1 | | 小青 | z | NULL | 2 | | 小青 | NULL | NULL | 3 | | NULL | NULL | NULL | 13 | +------+------+------+----------+ 23 rows in set (0.07 sec) mysql> select name,cat,fish,sum(fish) from r group by name with rollup; +------+-----+------+-----------+ | name | cat | fish | sum(fish) | +------+-----+------+-----------+ | 小紅 | x | 1 | 7 | | 小明 | x | 1 | 12 | | 小青 | y | 3 | 6 | | NULL | y | 3 | 25 | +------+-----+------+-----------+ 4 rows in set (0.05 sec) mysql> select name,cat,fish,sum(fish) from r group by name,cat with rollup; +------+------+------+-----------+ | name | cat | fish | sum(fish) | +------+------+------+-----------+ | 小紅 | x | 1 | 4 | | 小紅 | y | 1 | 3 | | 小紅 | NULL | 1 | 7 | | 小明 | x | 1 | 7 | | 小明 | y | 2 | 4 | | 小明 | z | 1 | 1 | | 小明 | NULL | 1 | 12 | | 小青 | y | 3 | 3 | | 小青 | z | 2 | 3 | | 小青 | NULL | 2 | 6 | | NULL | NULL | 2 | 25 | +------+------+------+-----------+ 11 rows in set (0.06 sec) mysql> select name,cat,fish,sum(fish) from r group by name,cat,fish with rollup; +------+------+------+-----------+ | name | cat | fish | sum(fish) | +------+------+------+-----------+ | 小紅 | x | 1 | 1 | | 小紅 | x | 3 | 3 | | 小紅 | x | NULL | 4 | | 小紅 | y | 1 | 1 | | 小紅 | y | 2 | 2 | | 小紅 | y | NULL | 3 | | 小紅 | NULL | NULL | 7 | | 小明 | x | 1 | 1 | | 小明 | x | 2 | 2 | | 小明 | x | 4 | 4 | | 小明 | x | NULL | 7 | | 小明 | y | 2 | 4 | | 小明 | y | NULL | 4 | | 小明 | z | 1 | 1 | | 小明 | z | NULL | 1 | | 小明 | NULL | NULL | 12 | | 小青 | y | 3 | 3 | | 小青 | y | NULL | 3 | | 小青 | z | 1 | 1 | | 小青 | z | 2 | 2 | | 小青 | z | NULL | 3 | | 小青 | NULL | NULL | 6 | | NULL | NULL | NULL | 25 | +------+------+------+-----------+ 23 rows in set (0.07 sec)