Skip to content
Advertisement

SQL to generate %, n and N from the datatable

I seek your help in generating a summary query result as %, n (numerator), and N (Denominator) out of a variable in the dataset for each underlying category:

e.g: data

sr.no. is_healthy
1 yes
2 no
3 yes
4 no
5 yes
6 yes
7 no
8 yes
9 no
10 yes

I expect the following as a summary result

is_healthy % n N
yes 60 6 10
no 40 4 10

What could be a possible SQL query to solve this challenge? Thanks in adavance.

Advertisement

Answer

N is the total count of rows in the table.
n is the count of rows matching a value.
% is just n/N*100.

You can get n by using count(*) in a grouped query and N by using count(*) in an ungrouped query. Since you know N will be a single row, you can cross-join on it:

SELECT     is_healthy, cnt, total, cnt / total * 100 AS percent
FROM       (SELECT   is_healthy, COUNT(*) AS cnt
            FROM     my_table
            GROUP BY is_healthy) grouped
CROSS JOIN (SELECT COUNT(*) AS total
            FROM   mytable) ungrouped
User contributions licensed under: CC BY-SA
4 People found this is helpful
Advertisement