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

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-31 13:14:30  来源:igfitidea点击:

How do I add a total as the last row in my sql?

mysqlsqlsql-server

提问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