繁体   English   中英

在 GROUP BY 查询中划分值

[英]Dividing values in a GROUP BY query

我试图将 numHospitalizations 除以 numCases 以获得住院百分比,并将 numDeaths 除以 numCases 以获得死亡百分比。 有很多重复的健康区,所以我认为最好按健康区分组,但我不断得到:

不是 GROUP BY 表达式。

SELECT healthDistrict AS HEALTH_DISTRICT
    , (numHospitalizations / numCases) AS PERCENTHOSP
    , (numDeaths / numCases) AS PERCENTDEATH
FROM CovidReport
GROUP BY UPPER(healthDistrict);

我猜这就是您所追求的,但是MCVE 会非常有用

;WITH agg AS
(
  SELECT 
    UPPER(healthDistrict) AS HEALTH_DISTRICT, 
    Hosp   = SUM(numHospitalizations)*1.0,
    Cases  = NULLIF(SUM(numCases)*1.0,0),
    Deaths = SUM(numDeaths)*1.0
  FROM dbo.SomethingSlightlyLessMorbid
  GROUP BY UPPER(healthDistrict)
)
SELECT HEALTH_DISTRICT,
       PERCENTHOSP  = CONVERT(decimal(8,2), (Hosp   / Cases)), 
       PERCENTDEATH = CONVERT(decimal(8,2), (Deaths / Cases))
FROM agg;

您需要形成所有未分组的列的聚合(并防止被零除)。

SELECT
  UPPER(healthDistrict) AS HEALTH_DISTRICT,
  CASE WHEN SUM(numCases) > 0 THEN SUM(numHospitalizations) * 1.0 / SUM(numCases) ELSE 0 END AS PERCENTHOSP,
  CASE WHEN SUM(numCases) > 0 THEN SUM(numDeaths) * 1.0 / SUM(numCases) ELSE 0 END AS PERCENTDEATH
FROM
  SomethingSlightlyLessMorbid
GROUP BY
  UPPER(healthDistrict);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM