在postgres / redshift中对百分比计算进行分组

问题描述 投票:0回答:1

我一遍又一遍地遇到相同的问题,希望有人可以提供帮助...

我有一个带有类别列的大表,该类别列中有28个驴子品种条目,然后我在两个子查询中对按这些类别分组的两个特定值进行计数:

WITH totaldonkeys AS (
    SELECT donkeybreed,
           COUNT(*) AS total
    FROM donkeytable1
    GROUP BY donkeybreed
)
,
sickdonkeys AS (
    SELECT donkeybreed,
           COUNT(*) AS totalsick
    FROM donkeytable1
    JOIN donkeyhealth on donkeytable1.donkeyid = donkeyhealth.donkeyid
    WHERE donkeyhealth.sick IS TRUE
    GROUP BY donkeybreed
)
,

我的目标是得到一个表格,该表格主要包含每个品种的病驴的百分比,但是我总是最终像地狱一样苦苦挣扎,因为无法在不使用聚合函数的情况下无法分组:

SELECT (CAST(sickdonkeys.totalsick AS float) / totaldonkeys.total) * 100 AS percentsick,
                totaldonkeys.donkeybreed
    FROM totaldonkeys, sickdonkeys
    GROUP BY totaldonkeys.donkeybreed

当我运行此命令时,每种驴最终得到28个结果,我相信这是正确的,但显然有数百个无用的数据点。

我知道我在这里可能真的很愚蠢,但是我一直在用新的donkeydata一次又一次地碰到这个问题,我显然应该以一种新的方式来构造整个事情,因为如果没有这些,您将无法完成最后的查询一个聚合函数,我想我肯定缺少一些重要的东西。

sql postgresql group-by percentage
1个回答
0
投票

您可以在donkeyhealth表中轻松计算出患病的比例

© www.soinside.com 2019 - 2024. All rights reserved.