2016-06-10 347 views
1

是否有簡單的方法來編寫SQL四分位函數?teradata四分位函數(或ANSI 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 
; 

我還沒有發現任何可用於這方面迄今

+0

你能告訴你的預期輸出 – Noel

回答

2

我不明白你爲什麼要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; 
+0

什麼是Teradata的版本,你使用?在TD14中似乎並不存在。 –

+1

Bart的答案對於TD14.10 +是正確的,在您必須重寫之前,請參閱http://developer.teradata.com/blog/dnoeth/2011/06/missing-functions-percentile-disc-percentile-cont-median事實上,在14.10中這應該更有效率,因爲每個'percentile_cont'都是單獨計算的。 – dnoeth

+0

已確認,按15.x中所述進行工作 –