Как я могу найти медиану в sql - PullRequest
0 голосов
/ 15 марта 2019

Как мне найти медиану в sql.Я пытаюсь

select 
 date, 
 sum(amount), 
 median(amount), 
 count(user) 
from table
group by 1

Это показывает ошибку, что

Медиана функции (двойная точность) не существует

1 Ответ

0 голосов
/ 15 марта 2019

Попробуйте, если этот стандартный sql работает.

select 
    t.[date]
    ,sum(amount) ttl_amount
    ,(select sum(s.amount) / (select ((count(*) + 1) % 2) + 1 from @table s where s.[date] = t.[date])
            from (select s.amount
                    from @table s 
                    where t.date = s.date 
                    order by s.amount asc 
                    offset (select ((count(*) - (count(*) + 1) % 2) / 2) from @table s where s.[date] = t.[date]) rows fetch next 
                           (select ((count(*) + 1) % 2) + 1              from @table s where s.[date] = t.[date]) rows only ) s ) median
    ,count(distinct [user]) dst_user
from @table t
group by [date]
...