Медианные значения в T-SQL

Для четных строк формула медианы составляет (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 для поиска медианы в обе ситуации? Например, когда количество строк нечетное и также, когда число строк четное?

Можно ли исказить мой запрос, чтобы он мог работать для медианы как в ситуациях с четным, так и нечетным числом строк?

6
задан Peter Mortensen 13 December 2017 в 00:20
поделиться