如何在我的sql中添加总计作为最后一行?

时间:2012-05-03 14:52:23

标签: mysql sql sql-server

我正在尝试显示一行“Total”,它将执行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
/

输出我想:

Windows 200

Linux 120

总计320

正如您在上面所看到的,我想要做的是在末尾添加一个名为“Total”的行,它基本上会执行SUM(count(*))。这样做的正确语法是什么?谢谢!

5 个答案:

答案 0 :(得分:17)

使用WITH ROLLUP修饰符GROUP BY

SELECT   IFNULL(env, 'Unknown'),
         COUNT(*) AS Count
FROM     env_table
GROUP BY env WITH ROLLUP
ORDER BY env

答案 1 :(得分:5)

也许是这样的?

SELECT   IFNULL(env, 'Unknown'),
         COUNT(*) AS Count
FROM env_table
GROUP BY env
ORDER BY env
UNION ALL
SELECT   null,
         Count(*)
FROM env_table

答案 2 :(得分:0)

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       

答案 3 :(得分:0)

SELECT   COALESCE(env, 'Total') AS Description,
         COUNT(*) AS Count
FROM     env_table
GROUP BY env WITH ROLLUP
ORDER BY env

答案 4 :(得分:0)

我希望它有效。万一,如果需要任何更正,很乐意听到我的错误。

select environment, count from table a
union all
(select "total" as environment, sum(count) from table b
group by 1)