Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Linux 120

Total 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!

like image 404
ad2387 Avatar asked May 03 '12 14:05

ad2387


2 Answers

Use the WITH ROLLUP modifier to GROUP BY:

SELECT   IFNULL(env, 'Unknown'),
         COUNT(*) AS Count
FROM     env_table
GROUP BY env WITH ROLLUP
ORDER BY env
like image 57
eggyal Avatar answered Oct 24 '22 02:10

eggyal


SELECT   COALESCE(env, 'Total') AS Description,
         COUNT(*) AS Count
FROM     env_table
GROUP BY env WITH ROLLUP
ORDER BY env
like image 44
Paulo Gustavo Benfatti Avatar answered Oct 24 '22 02:10

Paulo Gustavo Benfatti