我需要从此表中选择最小日期和金额,我该怎么办?
Table:
|user_id |date |amount |
---------+-----------+----------------
|1 |2014-08-19 | 1000
|2 |2014-12-04 | 20000
|2 |2014-01-09 | 21000
|1 |2015-02-26 | 6000
|2 |2015-03-15 | 27000
|1 |2015-10-26 | 8000
预期结果:
|user_id |date |amount |
---------+-----------+----------------
|1 |2014-08-19 | 1000
|2 |2014-12-04 | 20000
答案 0 :(得分:1)
在Postgres中,使用let hamsters = [murrayTheHamster, morganTheHamster, mauriceTheHamster]
print(hamsters.textualDescription)
distinct on
select distinct on (user_id) t.*
from t
order by user_id, date asc;
为括号列表中的每个键组合返回一行。列表中的键需要是订单的第一个键。查询返回遇到的第一行。在这种情况下,具有最小distinct on
(基于date
asc)的那个。
如果RedShift不支持date
,那么只需使用窗口函数:
distinct on