sql - 返回具有相同 ref_id 的每个元素的最后金额

标签 sql postgresql greatest-n-per-group

我有 2 个表,一个是 credit,另一个是 creditdetails。 Creditdetails 每天为每个信用创建新行。

ID  Amount  ref_id    date
 1     2       1      16.03
 2     3       1      17.03 
 3     4       1      18.03
 4     1       2      16.03
 5     2       2      17.03
 6     0       2      18.03

我想用唯一 ID 和最后日期总结每一行的数量。所以输出应该是 4 + 0。

最佳答案

您可以使用 ROW_NUMBER 过滤每个 ref_id 的最新金额。

然后求和。

SELECT SUM(q.Amount) AS TotalLatestAmount
FROM
(
  SELECT 
   cd.ref_id,
   cd.Amount,
   ROW_NUMBER() OVER (PARTITION BY cd.ref_id ORDER BY cd.date DESC) AS rn
  FROM Creditdetails cd
) q
WHERE q.rn = 1;

db<>fiddle 测试 here

关于sql - 返回具有相同 ref_id 的每个元素的最后金额,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55260553/

相关文章:

sql - Postgis计算点与点之间的距离

postgresql - 手动释放 Postgres LOCK

mysql - 在联接中从分组依据中排除一列

sql - 如何使这个 Mysql 查询工作?

sql - 在 SQL 语句轨中组合 Ruby 变量来查找两个日期之间的天数差异

mysql - 拉取组中特定列的最大值的mysql行

sql - 如何使用开始日期和结束日期从 SQL 表中输出按天扩展的行?

mysql - 如何使用一组记录的值列表中的值更新列

php - 组合这三个 SQL 查询

java - 在 JDBC 中插入单引号以进行 SQL 查询不起作用