TSQL разделить один счет на другой, чтобы получить пропорцию - PullRequest
0 голосов
/ 16 октября 2019

Я хотел бы рассчитать долю животных в столбце BreedTypeID со значением 1. Я думаю, что самый простой способ - это подсчитать n BreedTypeID = 1 / total BreedTypeID. (Я также хотел, чтобы они имели одинаковый 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?

Большое спасибо

1 Ответ

0 голосов
/ 17 октября 2019

Это решит вашу проблему, хотя я бы посоветовал вам использовать псевдонимы таблиц вместо schema.table.column. Гораздо проще читать:

Просто замените:

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

С

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