MySQL 如何在我的 sql 中添加总数作为最后一行?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/10433885/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How do I add a total as the last row in my sql?
提问by ad2387
I'm trying to display a row, 'Total', that will do a sum of the Count column. The following code will have two columns, Environment and Count.
我正在尝试显示一行“总计”,它将计算 Count 列的总和。以下代码将有两列,Environment 和 Count。
select
case
when env is null THEN 'Unknown'
else env
end,
count(*) as Count
from env_table
group by env
order by env
/
Output I would like:
我想要的输出:
Windows 200
视窗 200
Linux 120
Linux 120
Total 320
共计 320
As you can see above, what I would like to do is add a row called "Total" at the end that would essentially do a SUM(count(*)). What is the proper syntax to do this? Thanks!
正如你在上面看到的,我想要做的是在最后添加一个名为“Total”的行,它本质上会做一个 SUM(count(*))。这样做的正确语法是什么?谢谢!
回答by eggyal
Use the WITH ROLLUPmodifier to GROUP BY:
使用WITH ROLLUP修饰符GROUP BY:
SELECT IFNULL(env, 'Unknown'),
COUNT(*) AS Count
FROM env_table
GROUP BY env WITH ROLLUP
ORDER BY env
回答by Kevin DiTraglia
Maybe something like this?
也许是这样的?
SELECT IFNULL(env, 'Unknown'),
COUNT(*) AS Count
FROM env_table
GROUP BY env
ORDER BY env
UNION ALL
SELECT null,
Count(*)
FROM env_table
回答by Peposh
SELECT env, count
FROM (SELECT CASE WHEN env is null THEN 'Unknown' ELSE env END env,
count(*) count
FROM env_table
GROUP BY env
ORDER BY env)
UNION ALL
SELECT 'Total' env,
count(*) count
FROM env_table
回答by Paulo Gustavo Benfatti
SELECT COALESCE(env, 'Total') AS Description,
COUNT(*) AS Count
FROM env_table
GROUP BY env WITH ROLLUP
ORDER BY env

