我一遍又一遍地遇到相同的问题,希望有人可以提供帮助...
我有一个带有类别列的大表,该类别列中有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一次又一次地碰到这个问题,我显然应该以一种新的方式来构造整个事情,因为如果没有这些,您将无法完成最后的查询一个聚合函数,我想我肯定缺少一些重要的东西。
您可以在donkeyhealth
表中轻松计算出患病的比例