如何计算每组的百分比?
Posted
技术标签:
【中文标题】如何计算每组的百分比?【英文标题】:How to compute percentage in each group? 【发布时间】:2017-11-12 19:10:41 【问题描述】:我有一个名为 events
的表,有 5000 个条目。
每个事件都有一个recorded_on
字段,该字段可能为空,也可能不为空。
每个事件还有一个 artist
字段,它是 10 个不同的值之一。
是否在 SQL(特别是 SQLite)的能力范围内发出单个查询,该查询将返回艺术家的姓名以及他们的事件中有多少百分比具有 null 作为 recorded_on
的值?如
ARTIST | PERCENTAGE RECORDED
------------------------------
Joe | 49.2
Sarah | 17.8
Mike | 83.0
【问题讨论】:
【参考方案1】:要为每个组获取一个输出行,请使用 GROUP BY。
recorded_on IS NULL
是一个boolean 表达式,其结果是1
或0
:
SELECT artist,
100.0 * sum(recorded_on IS NULL) / count(*) AS "percentage recorded"
FROM events
GROUP BY artist;
【讨论】:
【参考方案2】:select
artist,
( COUNT(
CASE recorded_on
WHEN NULL THEN 1
ELSE NULL
END
) / COUNT(*) ) * 100 as percentage
from event group by artist
【讨论】:
这肯定是对的吗?无论如何,我总是得到 0 作为数字,尽管这可能是我在运行它时的错误。 recorded_on 字段可以为 Null 吗? 是的。我可以SELECT COUNT(*) FROM events WHERE recorded_on IS NULL
取回一个号码。以上是关于如何计算每组的百分比?的主要内容,如果未能解决你的问题,请参考以下文章