2017-05-22 4 views
-1

내 생각에 추가 할 때 아래의 행을 작동시키지 못합니까? STDDEV (STAT) 바이어스오류 [HY000] 오류 : 집계 함수 호출이 중첩되지 않을 수 있습니다 */

with c as (
    SELECT A.ENGINE_ASOF_CALENDAR_DATE, A.LEVEL_1_CODE CURR, CNTR_TO_ACTIVE_RISK, A.PRICE, a.ACTIVE_WEIGHT_PCT, 
      lag(a.PRICE, 1) over(partition by a.LEVEL_1_CODE order by a.ENGINE_ASOF_CALENDAR_DATE) price_lag, 

      lag(CNTR_TO_ACTIVE_RISK, 1) over(partition by a.LEVEL_1_CODE order by a.ENGINE_ASOF_CALENDAR_DATE) risk_lag, 

      price_lag/a.PRICE - 1 rtn, 
      a.ACTIVE_WEIGHT_PCT * rtn wgt_rtn 
    FROM DBS_APPL_RISK_DATAMART.USR_OWNR_RISK_DATAMART.VWC_FOREIGNEXCHANGE_FUND_EXPOSURE A 
    WHERE A.PORTFOLIO_CODE = 'Sunsuper Active - SUKHH3_Active' 
) 

SELECT c.*, 
     sum(wgt_rtn) over(partition by c.ENGINE_ASOF_CALENDAR_DATE)sum_rtn, 
     sum(risk_lag) over(partition by c.ENGINE_ASOF_CALENDAR_DATE)sum_risk_lag, 
     sum_risk_lag/sqrt(260) over(partition by c.ENGINE_ASOF_CALENDAR_DATE)sum_lag_risk2, 
     sum_rtn/nullif(sum_lag_risk2,0) stat, 
     stddev(stat) bias 


FROM c 

order by c.ENGINE_ASOF_CALENDAR_DATE desc 

답변

0

당신은 그들이 정의 위치를 ​​선택 같은 표현식에 열 별칭을 사용하고 있습니다. group by이없는 select의 집계 함수도 혼합합니다. 나는 표준 편차에 의해 분할 될해야하는지 확실하지 않다

WITH . . . 
SELECT c.*, sum_rtn/nullif(sum_lag_risk2, 0) as stat, 
     stddev(sum_rtn/nullif(sum_lag_risk2, 0)) over() as bias 
FROM (SELECT c.*, 
      sum(wgt_rtn) over (partition by c.ENGINE_ASOF_CALENDAR_DATE) as sum_rtn, 
      sum(risk_lag) over (partition by c.ENGINE_ASOF_CALENDAR_DATE) as sum_risk_lag, 
      sum_risk_lag/sqrt(260) over (partition by c.ENGINE_ASOF_CALENDAR_DATE) as sum_lag_risk2 
     FROM c 
    ) c 
ORDER BY c.ENGINE_ASOF_CALENDAR_DATE desc 

:

아마도이 문제가 해결됩니다. 이것은 모든 데이터에 대한 것입니다.

+0

감사합니다. Gordon에게 감사합니다. c.ENGINE_ASOF_CALENDAR_DATE 이상으로 파티션 된 경우 작동합니다. –

+0

30 일 지연으로 표준 편차 수치 (바이어스)를 갖는 방법이 있습니까? –

+0

@TimCooper. . . 나는 당신이 다른 질문을 할 것을 제안합니다. '편견'에만 초점을 맞추는 경우 쿼리를 약간 단순화하십시오. –