【发布时间】:2018-11-22 10:15:51
【问题描述】:
由于对用例的误解而改变问题。
Amazon Redshift 查询以下问题陈述。
数据结构:
- id - 主键
- acc_id - 贷款账户唯一的 ID(此 ID 对所有账户都相同) emi 用于特定的贷款账户,这可能重复 6 次或 12次基于贷款期限,可以是6个月或12个月 分别)
- status - PAID 或 UNPAID (emi 的 unpaid 跟 my unpaid 仅限emi)
- s_id - 只是一个调度 ID,它是一个连续的数字 特定的贷款 ID
- due_date - 特定 emi 的截止日期
- 本金 - 到期金额
桌子:
id acc_id status s_id due_date principal
9999957 10003 PAID 102 2018-07-02 12:00:00 4205
9999958 10003 UNPAID 103 2018-08-02 12:00:00 4100
9999959 10003 UNPAID 104 2018-09-02 12:00:00 4266
9999960 10003 UNPAID 105 2018-10-02 12:00:00 4286
9999962 10004 PAID 106 2018-07-02 12:00:00 3200
9999963 10004 PAID 107 2018-08-02 12:00:00 3100
9999964 10004 UNPAID 108 2018-09-02 12:00:00 3266
9999965 10004 UNPAID 109 2018-10-02 12:00:00 3286
用例 -
未付金额在到期日之后成为拖欠(逾期)。
所以我需要在每个月底计算拖欠金额,在这种情况下,从第一个到期日期是 7 月 2 日到最后一个到期日期(假设它是当前月份的 11 月 2 日)
我还需要计算该月月底逾期的天数。
以上数据说明:
- 从提供的样本数据来看,7 月底没有 EMI 到期,因此拖欠金额为 0
- 但在 8 月底 - id 9999958 到期 - 截至 8 月 31 日 拖欠金额为 4100,逾期天数为 29(8 月 31 日减去 8 月 2 日)
问题:我需要计算贷款 (acc_id) 而不是 emi。
进一步说明,第一个 EMI 将在第一个月到期 29 天,第二个月到期 59 天,第二个 EMI 将在第二个月到期 29 天。 但我在贷款级别 (acc_id) 需要这个。
9 月 30 日继续使用相同的示例,acc_id 10003 自 8 月 2 日起到期,因此截至 9 月 30 日,到期金额为 8366 (4100 + 4266),DPD (days_past_due) 为 59 (29 + 30)。
acc_id 10004 也是 3100 到期,DPD 是 28(9 月 30 日 - 9 月 2 日)。
最终的输出是这样的:
Month_End DPD_Band Amount
2018/08/31 0-29 4100
2018/08/31 30-59 0
2018/08/31 60-89 0
2018/08/31 90+ 0
2018/09/30 0-29 3100
2018/09/30 30-59 8366
2018/09/30 60-89 0
2018/09/30 90+ 0
查询尝试:可以根据拖欠日的案例陈述创建 DPD 带。我需要真正的帮助来首先创建月末,然后按照上述不同拖欠日期的说明查找投资组合级别的金额。
【问题讨论】:
-
我已经删除了所有那些冲突的 dbms 标签。将其中一个放回去,用于实际使用的 dbms。
-
指定预期结果以及格式化文本。并向我们展示您当前的查询尝试。
-
好的,新来的。感谢您的关注。
-
为什么是mysql标签?这是mysql还是redshift?
-
数据在 mysql 和 Redshift 上都可用。
标签: mysql sql amazon-redshift