我有以下表格:
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和不同的qots。 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)): / p>
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)
无论如何,有人可以看看它并告诉我它是否正确? 解释平原对我来说很好。无论如何,当我运行它时需要很长时间。 我不确定我的查询是否正确。该表有很多条目顺便说一句。
答案 0 :(得分: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
它似乎与你匹敌。