如何从每个货币对SQL中选择最大时间戳?

如何从每个货币对SQL中选择最大时间戳?,sql,Sql,假设我有一张桌子 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 curr1 curr2 rate 2017-01-03 USD GBP

假设我有一张桌子

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    curr1    curr2    rate
2017-01-03   USD      GBP      0.83
2017-01-01   EUR      GBP      0.98

我不确定如何使用
distinct
group by
功能执行此操作。有人能提供建议吗?

嗯,我不确定如何使用
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
                    );

嗯,我不确定如何使用
distinct
groupby
来实现这一点。也许其他人可以解决这个问题

我会在大多数数据库中使用相关子查询:

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
                    );

这可以通过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;

这可以通过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;