如何在mysql中确定该用户本周的延迟付款

Posted

技术标签:

【中文标题】如何在mysql中确定该用户本周的延迟付款【英文标题】:How To determine this user late pay for this week in mysql 【发布时间】:2019-06-26 15:53:23 【问题描述】:

所以在这里我有一个案例来确定这个用户他每周是否迟到付款,以确定迟到与付款日期和上一个逾期字段的比较

我有这样的样本数据

Name   to be paid    DATE PAID       OVERDUE DATE
Bakrie  195000       2019-07-01       2019-07-08
Rocky   195000       2019-07-01       2019-07-08
Bakrie  195000       2019-07-15       2019-07-22
Bakrie  195000       2019-07-29       2019-08-05
Bakrie  195000       2019-08-05       2019-08-12
Febri   130000       2019-06-25       2019-07-02

希望生成的数据

 Name   to be paid    DATE PAID       OVERDUE DATE    sign
Bakrie  195000       2019-07-01       2019-07-08      NOT LATE
Rocky   195000       2019-07-01       2019-07-08      NOT LATE
Bakrie  195000       2019-07-15       2019-07-22      LATE
Bakrie  195000       2019-07-29       2019-08-05      Late
Bakrie  195000       2019-08-05       2019-08-12      not late
Febri   130000       2019-06-25       2019-07-02     not late

如您所见用户名 bakrie 他延迟付款,因为在第二个付款日期已超过他之前记录的付款到期日的到期日

我尝试过这样的查询,但失败了。他这样显示数据不晚

Bakrie  195000  2019-07-01  2019-07-08  NOT LATE
Bakrie  195000  2019-07-01  2019-07-08  NOT LATE
Bakrie  195000  2019-07-01  2019-07-08  NOT LATE
Bakrie  195000  2019-07-01  2019-07-08  NOT LATE
Rocky   195000  2019-07-01  2019-07-08  NOT LATE
Bakrie  195000  2019-07-15  2019-07-22  LATE

我的查询是这样的`

  select trackku.*, if(date paid > overdue_paid,'LATE','NOT LATE') from trackku

请帮帮我!?!?!

【问题讨论】:

为什么你要为 Bakrie 签署 LATE 付款,当他在 2019 年 7 月 29 日付款时,到期日是 2019 年 8 月 5 日? 您从查询中获得的数据与表中的示例数据不对应。查看过期日期... 是的,但是当有另一个用户迟到来确定他是否迟到时,bakrie 不仅会出现。 对不起,我不明白你的解释。请在数据中澄清并修正您的逾期日期。 为什么你要为 Bakrie 签署 LATE 付款,当他在 2019-07-29 付款时,到期日是 2019-08-05?因为之前的记录提醒到期日是 2019 年 7 月 22 日,而下一个记录他的付款日期是 2019 年 7 月 29 日,这就是他签署逾期付款的原因 【参考方案1】:

根据您对问题的描述,我得出以下查询。

select
  a.name, a.paid, a.date_paid, a.overdue_date,
  case
    when max(b.overdue_date) is null or
         max(b.overdue_date) >= a.date_paid then
      'not late'
    else
      'late'
  end as sign
from trackku as a
left join trackku as b
  on a.name = b.name and a.date_paid > b.date_paid
group by a.name, a.paid, a.date_paid, a.overdue_date;

输出:

+--------+--------+------------+--------------+----------+
|  name  |  paid  | date_paid  | overdue_date |   sign   |
+--------+--------+------------+--------------+----------+
| Bakrie | 195000 | 2019-07-01 | 2019-07-08   | not late |
| Bakrie | 195000 | 2019-07-15 | 2019-07-22   | late     |
| Bakrie | 195000 | 2019-07-29 | 2019-08-05   | late     |
| Bakrie | 195000 | 2019-08-05 | 2019-08-12   | not late |
| Febri  | 130000 | 2019-06-25 | 2019-07-02   | not late |
| Rocky  | 195000 | 2019-07-01 | 2019-07-08   | not late |
+--------+--------+------------+--------------+----------+

使用SQL Fiddle在线测试。

【讨论】:

虽然我已经尝试测试包含数据以确保此查询是正确的,并且结果与我上面的要求一致,并且结果是正确的,但感谢您帮助我,先生。 ,

以上是关于如何在mysql中确定该用户本周的延迟付款的主要内容,如果未能解决你的问题,请参考以下文章

如何实现延迟队列

寻找贝宝付款教程[关闭]

Paypal 延迟链式付款中的付款转帐

您如何确定用于已付款发票的付款方式?

如何在 Android 上向用户付款

如何在 mysql 中存储 gps 坐标,然后在没有时间延迟的情况下检索它?