简体   繁体   English

如何将总计添加为sql的最后一行?

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

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. 以下代码将包含两列,即“环境”和“计数”。

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 Windows 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(*)). 正如您在上面看到的,我想做的是在末尾添加一行称为“总计”的行,该行实际上将执行SUM(count(*))。 What is the proper syntax to do this? 正确的语法是什么? Thanks! 谢谢!

Use the WITH ROLLUP modifier 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

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
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       
SELECT   COALESCE(env, 'Total') AS Description,
         COUNT(*) AS Count
FROM     env_table
GROUP BY env WITH ROLLUP
ORDER BY env

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM