给定与此类似的数据集:
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;