如何计算每组的百分比?

时间:2017-06-11 04:08:53

标签: sql sqlite group-by aggregate-functions percentage

我有一个名为events的表,有5000个条目。

每个事件都有一个recorded_on字段,可能为空或可能不是。

每个事件还有一个artist字段,它是10个不同值之一。

是否在SQL(特定于SQLite)的能力范围内发出单个查询,该查询将返回艺术家的名称以及他们的事件的百分比为null recorded_on的值?如在

ARTIST | PERCENTAGE RECORDED
------------------------------
Joe    | 49.2
Sarah  | 17.8
Mike   | 83.0

2 个答案:

答案 0 :(得分:0)

select 
    artist,
    ( COUNT(
        CASE recorded_on
          WHEN NULL THEN 1
          ELSE NULL 
        END
    ) / COUNT(*) ) * 100 as percentage
 from event group by artist

答案 1 :(得分:0)

要为每个组获取一个输出行,请使用GROUP BY。 recorded_on IS NULLboolean表达式,其结果为10

SELECT artist,
       100.0 * sum(recorded_on IS NULL) / count(*) AS "percentage recorded"
FROM events
GROUP BY artist;