我有一个包含三列的表(lending_id int、installment_n serial int、status text
),我想知道如何检索 WAITING_PAYMENT(状态)
的最大差距每个贷款_id。
对于以下示例:
lending_id | installment_n | status
71737 1 PAID
71737 2 PAID
71737 3 PAID
71737 4 PAID
71737 5 PAID
71737 6 WAITING_PAYMENT
71737 7 WAITING_PAYMENT
71737 8 WAITING_PAYMENT
71737 9 WAITING_PAYMENT
71737 10 WAITING_PAYMENT
71737 11 WAITING_PAYMENT
71737 12 WAITING_PAYMENT
71737 13 WAITING_PAYMENT
71737 14 WAITING_PAYMENT
71737 15 WAITING_PAYMENT
71737 16 WAITING_PAYMENT
71737 17 WAITING_PAYMENT
71737 18 WAITING_PAYMENT
71737 19 WAITING_PAYMENT
71737 20 WAITING_PAYMENT
71737 21 WAITING_PAYMENT
354226 1 PAID
354226 2 PAID
354226 3 WAITING_PAYMENT
354226 4 WAITING_PAYMENT
354226 5 WAITING_PAYMENT
354226 6 WAITING_PAYMENT
354226 7 PAID
354226 8 WAITING_PAYMENT
354226 9 WAITING_PAYMENT
354226 10 WAITING_PAYMENT
354226 11 WAITING_PAYMENT
354226 12 WAITING_PAYMENT
354226 13 WAITING_PAYMENT
354226 14 WAITING_PAYMENT
354226 15 WAITING_PAYMENT
我想知道如何检索:
lending_id | count
71737 | 16
354226 | 8
由于 71737 会考虑第 6 至 21 期 (16) 对于 354226,差距在 8 和 15 (8) 之间。
最佳答案
下面的 SQL 应该可以达到目的,并且易于阅读和理解:
select t1.lending_id, max(t1.installment_n) - min(t1.installment_n) as count
from table t1
where t1.status = 'WAITING_PAYMENT'
and t1.installment_n >
(SELECT max(t2.installment_n) FROM table t2 where t2.lending_id = t1.lending_id and t2.status = 'PAID')
group by lending_id;
如需任何进一步说明,请随时询问我。
特德。
关于mysql - 最高连续出现次数的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46124330/