key | num -------------- A | 2.6 A | 3.1 B | 2.5 C | 2.7
Let’s say I have a table as shown above, and I want the percent of key
observations that take the value A. I can do this using the following case when
statements:
sum(case when key = 'A' then 1.0 else 0 end)/count(*) as A_pct
However, if I have lots of values for key
then I would have to write lots of case when
statements. Is there a simpler way to do this?
Advertisement
Answer
Try this below script. This will return percentage for all distinct keys.
SELECT Key, (COUNT(*)/(SELECT COUNT(*) FROM your_table)*1.00)*100.00 FROM your_table GROUP BY Key
If percentage is not required, then just do this as your sample code
SELECT Key, COUNT(*)/(SELECT COUNT(*) FROM your_table)*1.00 FROM your_table GROUP BY Key