返回

postgresql-SQL 确定期间内未付余额

发布时间:2022-07-27 15:31:14 323
# 数据库

我有下表:

/**
| NAME  | DELTA (PAID - EXPECTED) | PERIOD |
|-------|-------------------------|--------|
| SMITH |                      -50|       1|
| SMITH |                        0|       2|
| SMITH |                      150|       3|
| SMITH |                     -200|       4|
| DOE   |                      300|       1|
| DOE   |                        0|       2|
| DOE   |                     -200|       3|
| DOE   |                     -200|       4|
**/
DROP TABLE delete_me;

CREATE TABLE delete_me (
    "NAME" varchar(255),
    "DELTA (PAID - EXPECTED)" numeric(15,2),
    "PERIOD" Int
);

INSERT INTO delete_me("NAME",   "DELTA (PAID - EXPECTED)", "PERIOD")
VALUES
  ('SMITH',  -50,   1),
  ('SMITH',    0,   2),
  ('SMITH',  150,   3),
  ('SMITH', -200,   4),
  ('DOE',    300,   1),
  ('DOE',      0,   2),
  ('DOE',   -200,   3),
  ('DOE',   -200,   4)

其中 period 代表时间,1 是最新的,4 是最旧的。在每个时间段,该人都被收取费用和金额,他们可以偿还该金额或更多。负增量意味着他们欠那个时间段。正的增量意味着他们支付的金额超过了预期金额,并且在该时间段内获得了可应用于其他时间段的信用。如果有信用,我们希望首先还清最旧的时间段。我想知道每个时间段仍有多少未偿债务。所以在上面的例子中我想看到:

| NAME  | DELTA (PAID - EXPECTED) | PERIOD | PERIOD BALANCE |
|-------|-------------------------|--------|----------------|
| SMITH |                      -50|       1|             -50|
| SMITH |                        0|       2|               0|
| SMITH |                      150|       3|               0|
| SMITH |                     -200|       4|             -50|
| DOE   |                      300|       1|               0|
| DOE   |                        0|       2|               0|
| DOE   |                     -200|       3|            -100|
| DOE   |                     -200|       4|               0|

如何使用 Postgres SQL 显示期间内的未偿债务?

附加说明对于 Doe 最初,在最早的时期,欠 200,下一个时期欠原来的 200 加上另外 200(总共欠 400)。在第 2 期,支付了每月费用,但没有支付过去的余额。在最近一个时期 (1) 支付了超过每月金额的 300(其中 200 用于第 4 期中最旧的债务,这意味着它已还清;剩下 100 用于适用于第 3 期的债务;在应用了收回的 100 , 100 还欠)。对于最初在第 4 期的史密斯家族,他们少付了 200 美元。下一个时期,他们当月多付了 150 美元,这适用于最旧的 200 美元债务,剩下 50 美元尚待偿还。在第 2 期,每月的账单都付清了,他们仍然欠第 4 期的 50 美元。然后在第 1 期,他们少付了 50 美元。他们总共欠 100 美元,第 1 期为 50 美元,第 4 期为 50 美元。

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(1)
按点赞数排序
用户头像