使 SUM 子句特定于给定字段

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

我正在尝试获取给定 ID 的“良好”值与总计的比率。 当我只为 IN 子句使用一个 ID 时,下面的查询有效。 但是,当我添加多个 ID 时,总计最终会针对所有 ID,而不是针对给定 ID。 有没有办法修改 SUM 以使其特定于 ID?

 SELECT ID,
   COUNT (
           CASE WHEN [Status] = 'Good'
           THEN 1
           END
         ) Good,
    SUM(COUNT(*))over() as Total
    FROM TABLE
    WHERE ID IN ('ID1','ID2')
    GROUP BY ID
sql aggregate-functions
1个回答
0
投票

一般来说,无论您使用什么sql标准 - 窗口函数总是比常规聚合函数慢,因此,如果您不需要 - 最好避免它们,因此对您来说这应该可以解决问题:

SELECT
  ID,
  SUM(
    CASE 
      WHEN [Status] = 'Good' THEN 1
      ELSE 0
    END
  )/SUM(1),
FROM 
  TABLE
WHERE 
  ID IN ('ID1','ID2')
GROUP BY 
  ID
© www.soinside.com 2019 - 2024. All rights reserved.