首页 > 解决方案 > PostGreSql 使用拥有 Max 子句获取两列的唯一组合

问题描述

我正在使用 postGreSql。我有一个货币换算表,其中包含以下列 DateOfClosing、fromCurrency、toCurrency、closureRate。dateOfClosing 是 varchar 格式我想从过去 5 天中找到 fromCurrency 和 toCurrency 的最新唯一组合,例如,如果表内容如下

DateOfClosing    fromCurrency     toCurrency   closingRate
2020-06-25       INR              USD          1
2020-06-26       INR              USD          3
2020-06-26       JPY              USD          2
2020-06-24       THB              USD          1

它应该返回:

DateOfClosing    fromCurrency     toCurrency   cloisingRate
2020-06-26        INR             USD          3
2020-06-26        JPY             USD          2
2020-06-24        THB             USD          1

我尝试使用带有 max 子句的 groupby,但由于 varchar 到日期转换而出错。有人可以给我一个更好的解决方案吗?

标签: sqlpostgresqldateselectgreatest-n-per-group

解决方案


我们可以DISTINCT ON在这里使用:

SELECT DISTINCT ON (fromCurrency, toCurrency) *
FROM yourTable
ORDER BY fromCurrency, toCurrency, DateOfClosing DESC;

演示


推荐阅读