Функция квартиля терадата (или ANSI SQL)

Есть ли простой способ кодирования квартильной функции SQL?

Допустим, у меня есть список значений столбца в таблице (0,0,0,1,1,4,5,7,8,25,100,100,101,260,360,370}

Какой хороший способ создать набор результатов а-ля:

select 'Q1', quartile(1,col_name) from table_name
union
select 'Q2', quartile(2,col_name) from table_name
union
select 'Q3', quartile(3,col_name) from table_name
union
select 'Q4', quartile(4,col_name) from table_name
;

Я пока не нашел ничего пригодного для этого.

1 ответ

Решение

Я не понимаю, почему вы хотите Q4:) Для этого нет необходимости использовать функцию Pertile_cont(), вы можете получить ее с помощью max().

Этот код может помочь вам.

select      'q1' as q
            , percentile_cont(0.25) within group (order by col) as q_val
from        table
union
select      'q2' as q
            , percentile_cont(0.5) within group (order by col) as q_val
from        table
union
select      'q3' as q
            , percentile_cont(0.75) within group (order by col) as q_val
from        table;
Другие вопросы по тегам