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

时间:2019-03-20 12:14:47

标签: sql postgresql greatest-n-per-group

我有2张桌子,一张是贷方,另一张是贷方明细。 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。

3 个答案:

答案 0 :(得分:1)

您可以使用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 <>小提琴here

的测试

答案 1 :(得分:1)

使用此查询:

select ref_id, max(date) maxdate 
from creditdetails
group by ref_id

您将获得每个date的所有最后ref_id
所以您可以将join放在表creditdetails中并求和到​​{{1} }:

amount

答案 2 :(得分:0)

我想你想要这样的东西,

select sum(amount) 
 from table
where date = ( select max(date) from table);

了解到您的 date 列似乎不是标准格式,因此我无法确定是否需要在查询中对其进行格式化才能正常工作。

相关问题