2016-06-10 2 views
1

SQL Quartile 함수를 코딩하는 간단한 방법이 있습니까? 테이블 결과 집합을 생성 할 수있는 좋은 방법이 무엇 (00011457825100100101260360370}teradata quartile 함수 (또는 ANSI SQL)

에 열 값을 -

의 내가 목록이 있다고 가정 해 봅시다 - 라 :.

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을 참조하십시오. 실제로 이것은 각각의'percentile_cont'가 개별적으로 계산되기 때문에 14.10에서 더 효율적이어야합니다. – dnoeth

+0

15.x에서 설명한대로 작동 확인되었습니다. –

관련 문제