TSQL 将一个计数除以另一个给出一个比例

TSQL divide one count by another to give a proportion

我想计算 BreedTypeID 列中值为 1 的动物的比例。我认为最简单的方法是计算 n BreedTypeID = 1 / total BreedTypeID。 (我也希望他们在 ID 中具有相同的 YearDOB 和子字符串,如图所示)我尝试了以下操作:

(COUNT([dbo].[tblBreed].[BreedTypeID])=1 OVER (PARTITION BY Substring([AnimalNo],6,6), YEAR([DOB]))/ COUNT([dbo].[tblBreed].[BreedTypeID]) OVER (PARTITION BY Substring([AnimalNo],6,6), YEAR([DOB]))) As Proportion

但它有问题 COUNT([dbo].[tblBreed].[BreedTypeID])=1

我如何指定在 [BreedTypeID] =1 时只计算它?

非常感谢

这将解决您的问题,但我建议您使用 table 别名而不是 schema.table.column。更容易阅读:

只需替换:

COUNT([dbo].[tblBreed].[BreedTypeID])=1

SUM( CASE WHEN [dbo].[tblBreed].[BreedTypeID] = 1 THEN 1 ELSE 0 END)