Для четных строк формула медианы составляет (104,5 + 108) / 2 для таблицы ниже, а для нечетных строк это 108 для таблицы ниже:
Total Total
100 100
101 101
104.5 104.5
108 108
108.3 108.3
112 112
114
Я написал этот запрос, и он вычисляет правильная медиана, когда количество строк нечетное:
WITH a AS ( SELECT Total ,
ROW_NUMBER() OVER ( ORDER BY CAST(Total AS FLOAT) ASC ) rownumber
FROM [Table] A
),
b AS ( SELECT TOP 2
Total ,
isodd
FROM ( SELECT TOP 50 PERCENT
Total ,
rownumber % 2 isodd
FROM a
ORDER BY CAST(Total AS FLOAT) ASC
) a
ORDER BY CAST(total AS FLOAT) DESC
)
SELECT *
FROM b
Каков общий запрос T-SQL для поиска медианы в обе ситуации? Например, когда количество строк нечетное и также, когда число строк четное?
Можно ли исказить мой запрос, чтобы он мог работать для медианы как в ситуациях с четным, так и нечетным числом строк?