说我有一张桌子
TIMESTAMP curr1 curr2 rate
2017-01-01 USD GBP 0.81
2017-01-01 EUR GBP 0.98
2017-01-03 USD GBP 0.83
我想获得每种货币对的最新TIMESTAMP 的货币对汇率,因此这是输出:
TIMESTAMP curr1 curr2 rate
2017-01-03 USD GBP 0.83
2017-01-01 EUR GBP 0.98
我不确定如何使用distinct
和group by
函数执行此操作。有人可以建议吗?
答案 0 :(得分:2)
这可以通过group by和join来完成:
SELECT x.TIMESTAMP, x.curr1, x.curr2
FROM your_table x
INNER JOIN
(
SELECT MAX(TIMESTAMP) max_timestamp, curr1, curr2 FROM your_table
GROUP BY curr1, curr2
) y
ON x.TIMESTAMP= y.max_timestamp
AND x.curr1 = y.curr1
AND x.curr2 = y.curr2;
答案 1 :(得分:1)
好吧,我不确定如何使用distinct
和group by
执行此操作。也许其他人可以解决这个问题。
我会在大多数数据库中使用相关子查询:
select t.*
from atable t
where t.timestamp = (select max(t2.timestamp)
from atable t2
where t2.curr1 = t.curr1 and t2.curr2 = t.curr2
);