Функция квартиля терадата (или 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;