1

Tbl1 は次のようになります。

    CUSIP_ID1   CUSIP_ID2   cor       dt_pnts 
    00768Y818   00162Q726   0.974691   252
    00768Y818   00162Q205   0.874761   4
    00768Y818   00162Q103   0.774691   48  
    73935X153   00162Q726   0.979131   39
    73935X153   132061201   0.975207   252
    73935X153   34416W866   0.967654   152
    739371102   464287671   0.937278   252
    739371102   464287309   0.935797   252
    78467V103   33939L407   0.951472   35
    78467V103   78463X541   0.930144   252
    78467V103   57060U795   0.923911   108

私のコードは次のとおりです:(tbl3はティッカーの単なる参照テーブルです)

insert into tbl2 (ticker, cusip_id, maxcor, dt_pnts)
    select b.Ticker, a.CUSIP_ID1 No_indx_cusip, max(abs(a.cor)) maxcor, dt.dt_pnts
    from  tbl1 a 
    inner join tbl3 b on
        a.CUSIP_ID1 = b.CUSIP_ID and a.dt_pnts > 20 
    inner join 
        (
           select cusip_id1, cor, dt_Pnts 
           from tbl1
        ) dt ON a.CUSIP_ID1 = dt.CUSIP_ID1
    group by a.CUSIP_ID1, b.Ticker, dt.dt_pnts, dt.cor
    having abs(dt.cor) = MAX(abs(a.cor))

select * from tbl2

各ティッカー/cusip_id とそれぞれの日付ポイントの最大相関値を見つけて返すだけです。

ticker  cusip_id   maxcor  dt_pnts

TTFS    00768Y818   0.974691   252
PXLG    739371102   0.937278   252
INKM    78435X153   0.979131   39
RLY     78467V103   0.951472   35

ただし、CUSIP_ID1 ごとに同じ条件 (dt_pnts が > 20) で 2 番目に大きい相関 (cor) の値を見つけたいと思います。少しいじってみましdense_rank()たが、まだまだ初心者なので助けが必要です(お願いします!)

戻り値は次のとおりです。

ticker  cusip_id   maxcor  dt_pnts

TTFS    00768Y818   0.774681   48
PXLG    739371102   0.935797   252
INKM    78435X153   0.975207   252
RLY     78467V103   0.923911   108
4

1 に答える 1

4

row_number()この情報を取得するには、次を使用することをお勧めします。

select ticker, No_indx_cusip, cor, dt_pnts
from (select b.Ticker, a.CUSIP_ID1 as No_indx_cusip, a.cor, a.dt_pnts,
             row_number() over (partition by b.ticker order by abs(a.cor) desc) as seqnum
      from  tbl1 a 
      inner join tbl3 b
            on a.CUSIP_ID1 = b.CUSIP_ID and a.dt_pnts > 20
     ) t
where seqnum = 2;

これがクエリです。これをテーブルに挿入したい場合insertは、質問のように使用してください。

于 2013-08-13T19:32:56.760 に答える