teradata 四分位数函数(或 ANSI SQL)

teradata quartile function (or ANSI SQL)

是否有编写 SQL 四分位数函数的简单方法?

假设我有一个列表 - table 中的列值 (0,0,0,1,1,4,5,7,8,25,100,100,101,260,360,370}

生成结果集 a-la 的好方法是什么:

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
;

到目前为止我还没有发现任何在这方面有用的东西。

我不明白你为什么要 Q4 :) 没有必要为此使用 percentile_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;