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)
我想计算 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)