我正在尝试获取给定 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标准 - 窗口函数总是比常规聚合函数慢,因此,如果您不需要 - 最好避免它们,因此对您来说这应该可以解决问题:
SELECT
ID,
SUM(
CASE
WHEN [Status] = 'Good' THEN 1
ELSE 0
END
)/SUM(1),
FROM
TABLE
WHERE
ID IN ('ID1','ID2')
GROUP BY
ID