Можно ли получить процентиль в MS SQL Server Management Studio 17 - PullRequest
0 голосов
/ 23 октября 2019

Мне нужно показать 50-й процентиль в SSMS. Я использую TSQL и процентиль_конт, но он не распознается? Есть ли другой способ?

Я запрашиваю таблицу, подобную этой:

HerdID   Event
100      01/01/2009
100      08/01/2009

Существует несколько HerdID, и события происходят в течение нескольких лет, и в один год для каждого HerdID существует несколько событий,Меня интересует номер Недели, в котором события происходят для каждого стада каждый год. Получив некоторую помощь здесь, я получил этот запрос:

SELECT HerdID
      ,YEAR([Event]) As YearID
      ,DATEPART(wk,[Event]) As A
      ,MIN (DATEPART(wk,[Event])) OVER (PARTITION BY HerdID, YEAR([Event])) AS B
      ,MAX (DATEPART(wk,[Event])) OVER (PARTITION BY HerdID, YEAR([Event])) AS C
      ,COUNT([Event]) OVER (PARTITION BY HerdID, YEAR([Event])) AS D
      ,cast( ROW_NUMBER() OVER (PARTITION BY HerdID, YEAR([Event]) ORDER BY DATEPART(wk,[Event])) as dec(5,2))
        / cast (COUNT([Event]) OVER (PARTITION BY HerdID, YEAR([Event])) as dec(5,2)) AS E 


И он дает мне таблицу ниже.

HerdID  YearID  A   B   C   D   E   
000001  2009    6   6   53  3   0.333333
000001  2009    14  6   53  3   0.666666
000001  2009    53  6   53  3   1.000000
000002  2009    5   5   34  4   0.250000
000002  2009    16  5   34  4   0.500000
000002  2009    27  5   34  4   0.750000
000002  2009    34  5   34  4   1.000000

Я думаю, смогу ли я получить 50-й процентиль

ROW_NUMBER() OVER (PARTITION BY HerdID, YEAR([Event]) ORDER BY DATEPART(wk,[Event])) AS A

Это дало бы мне таблицу, подобную этой, где А - номер недели, в которой родилось 50% + стада

HerdID  YearID  A   B   C   D   E   
000001  2009    14  6   53  3   0.666666
000002  2009    16  5   34  4   0.500000

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

...