给定与此类似的数据集:

ccy | time | fxrate
GBP | 11   | 1.2
EUR | 21   | 1.4
CHF | 9    | 3.1
GBP | 15   | 1.1
EUR | 20   | 1.5
CHF | 1    | 3.0
CHF | 7    | 3.0
GBP | 20   | 1.9

我想得到每个ccy的最新fxrate(按“时间”):
ccy | time | fxrate
GBP | 20   | 1.9
EUR | 21   | 1.4
CHF | 9    | 3.1

用一个sql查询就可以得到这些数据吗?我的技术不行了。我想我需要按ccy…分组。。?最大时间在哪里。。?限制1。。?救命啊!
[编辑]使用postgresql

最佳答案

是的,您只能对max fxrate使用group by,但在您的情况下,您需要一个相关的子查询:

select t.*
from table t
where t.fxrate = (select max(t1.fxrate) from table t1 where t1.ccy = t.ccy);

在postgresql中,您可以执行以下操作:
select distinct on (ccy) *
from table t
order by t.fxrate desc;

08-06 23:30