0

次の表があります。

DPR_TS  TIMESTAMP(6)    Y           
DPR_QOT_ID  NUMBER(10)  Y           
DPR_CLOSE   NUMBER(16,4)    Y           
DPR_OPEN    NUMBER(16,4)    Y           
DPR_HIGH    NUMBER(16,4)    Y           
DPR_LOW NUMBER(16,4)    Y           
DPR_VOLUME  NUMBER(16,4)    Y           

同じ DPR_TS で異なる qot を持つ非常に頻繁に多くのエントリがあります。DPR_LOW、DPR_HIGH、DPR_VOLUME、DPR_OPEN は NULL の可能性があります。

次の例を参照してください。

DRP_TS            DPR_QOT_ID   DPR_CLOSE  DPR_LOW
30.07.2013 09:00  1            12         12
30.07.2013 09:00  1            12         12
30.07.2013 09:00  1            12         12
30.07.2013 09:00  1            12         NULL 
31.07.2013 09:00  1            13         13
31.07.2013 09:00  1            13         13
31.07.2013 09:00  1            13         NULL 
30.07.2013 09:00  2            17         17
30.07.2013 09:00  2            18         17
30.07.2013 09:00  2            17         17
30.07.2013 09:00  2            17         17
30.07.2013 09:10  2            15         15
30.07.2013 09:10  2            15         NULL 

上記のテーブルからこれらのエントリ (最新の dpr_close、min(dpr_low)、max(dpr_high)、max(dpr_open)、max(dpr_volume)、すべての集計された ny dpr_qot_id および trunc(dpr_ts)) を選択したいと思います。

    DRP_TS            DPR_QOT_ID   DPR_CLOSE  DPR_LOW
    30.07.2013 09:00  1            12         12 
    31.07.2013 09:00  1            13         13
    30.07.2013 09:10  2            15         15

私はこのクエリを試しました:

      SELECT dpr_qot_id
          ,trunc(dpr_ts)
          ,(SELECT (dpr_close)
             FROM tti_qot_load_ma t1
            WHERE t1.dpr_qot_id = (t2.dpr_qot_id)
                  AND dpr_ts = (SELECT MAX(dpr_ts)
                                  FROM tti_qot_load_ma t3
                                 WHERE t1.dpr_qot_id = t3.dpr_qot_id)
                  AND rownum = 1)
          ,MAX(t2.dpr_high)           
          ,MIN(t2.dpr_low)           
          ,MAX(t2.dpr_open)           
          ,MAX(t2.dpr_volume)    
      FROM tti_qot_load_ma t2
GROUP BY dpr_qot_id, trunc(dpr_ts)

とにかく、誰かがそれを見て、それが正しいかどうか教えてもらえますか? 説明プレーンは私には問題ないようです。とにかく、実行すると非常に時間がかかります。クエリが正しいかどうかわかりません。テーブルには多くのエントリがあります。

4

1 に答える 1

2

以下がニーズを満たしているかどうかを確認してください。

SELECT DRP_TS, MAX(DPR_QOT_ID), MIN(DPR_CLOSE), MAX(DPR_LOW)
FROM Table1 
GROUP BY DRP_TS
ORDER BY DRP_TS;

次のデモを使用して確認できます: SQL Fiddle

次の結果が生成されます。

DRP_TS      MAX(DPR_QOT_ID) MIN(DPR_CLOSE)  MAX(DPR_LOW)
30.07.2013 09:00        2                 12    17
30.07.2013 09:10        2                 15    15
31.07.2013 09:00        1                 13    13

お似合いのようです。

于 2013-07-30T22:11:45.717 に答える