sql - 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 到日期转换而出错。有人可以给我一个更好的解决方案吗?
解决方案
我们可以DISTINCT ON
在这里使用:
SELECT DISTINCT ON (fromCurrency, toCurrency) *
FROM yourTable
ORDER BY fromCurrency, toCurrency, DateOfClosing DESC;
演示
推荐阅读
- java - response.body().getResponseCode()==200 - 无响应
- javascript - Math.floor() 在 javascript 中向下舍入到最接近的 0.5
- python - 如何使用 np.arange 按系列类型划分系列
- java - 转换地图
到地图 > 分组依据后 - memory-management - 如何在 Cloud Run for GKE pod 中配置不同的 CPU/内存限制和请求?
- javascript - VueJS:如何成功地将数组从子组件传递到父组件
- mysql - 有没有办法使用 DATE_FORMAT 来选择多个月?
- vue.js - 如何调用从 props 传入的函数
- python - 我可以通过字典的键查询 MongoDB 吗?
- reporting-services - SSRS ODAC 客户端 TNS_Admin 配置