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;
是否有编写 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;