2017-05-22 11 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。 。 。別の質問をすることをお勧めします。あなたは 'バイアス'に焦点を絞っている場合は、クエリを少し簡素化してみてください。 –

関連する問題