Как определить этого пользователя просрочить оплату за эту неделю в MySQL - PullRequest
0 голосов
/ 26 июня 2019

Таким образом, здесь у меня есть случай, чтобы определить, что этот пользователь опаздывает или не платит каждую неделю, чтобы определить сравнение с поздней датой оплаты и предыдущим просроченным полем.

У меня есть примеры данных, подобные этой

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

пожалуйста, помогите мне!?!?!

1 Ответ

0 голосов
/ 26 июня 2019

Я пришел к следующему запросу на основе вашего описания проблемы.

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 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...