我需要获取GROUP BY查询中每个组的最后一条记录(关闭字段)。
我有以下数据结构
minute;symbol;timeframe;open;high;low;close;displayed
2021-02-22 00:00:00;EURUSD;M0;1.21103;1.21103;1.21103;1.21103;1
2021-02-22 00:00:00;EURUSD;M0;1.21103;1.21108;1.21103;1.21108;1
2021-02-22 00:02:00;EURUSD;M0;1.21127;1.21127;1.21127;1.21127;1
2021-02-22 00:02:00;EURUSD;M0;1.21127;1.21133;1.21127;1.21133;1
2021-02-22 00:03:00;EURUSD;M0;1.21125;1.21125;1.21125;1.21125;1
2021-02-22 00:03:00;EURUSD;M0;1.21125;1.21125;1.21109;1.21109;1我尝试了下面的代码,但它似乎返回了整个数据集的最新关闭
SELECT minute, id, time, date, open,
(SELECT close FROM graphs GROUP BY minute ORDER BY minute DESC LIMIT 1) AS close,
MIN(low) AS low,
MAX(high) AS high
FROM graphs
WHERE
symbol = 'EURUSD' AND
date >= '1420070400' AND
date <= '1640995199' AND
timeframe = 'M0' AND
showed = '1'
GROUP BY minute有什么建议吗?
发布于 2021-03-15 09:27:21
使用row_number()。我不确定确切的逻辑是什么,因为查询引用的time不在示例数据中,而是类似于:
select g.*
from (select g.*,
row_number() over (partition by minute , symbol order by time desc) as seqnum
from graphs g
where g.symbol = 'EURUSD' AND
g.date >= '1420070400' AND
g.date <= '1640995199' AND
g.timeframe = 'M0' AND
g.showed = '1'
) g
where seqnu = 1;https://stackoverflow.com/questions/66631236
复制相似问题