我正在尝试显示一行“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(*))。这样做的正确语法是什么?谢谢!
答案 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)