Мне нужно показать 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
Большое спасибо