Mysql 多行上的条件SQL查询

Mysql 多行上的条件SQL查询,mysql,sql,Mysql,Sql,我试图找出哪些客户拖欠了贷款。我想查询数据集以查找在过去60天内未付款的客户的用户id,但不确定如何在SQL中实现这一点 User_id Due_Date Loan_Amount Paid_Amount 1 2012-04-04 16:14:12 500 40 1 2012-05-04 16:14:12 500 40 1 2012-06-04 1

我试图找出哪些客户拖欠了贷款。我想查询数据集以查找在过去60天内未付款的客户的用户id,但不确定如何在SQL中实现这一点

User_id    Due_Date                Loan_Amount    Paid_Amount
1          2012-04-04 16:14:12    500            40
1          2012-05-04 16:14:12    500            40
1          2012-06-04 16:14:12    500            0
1          2012-07-04 16:14:12    500            0
1          2012-08-04 16:14:12    500            0
2          2012-02-15 03:30:55    2030           100
2          2012-03-15 03:30:55    2030           100
2          2012-04-15 03:30:55    2030           100
3          2012-01-03 12:24:42    777            10
3          2012-02-03 12:24:42    777            0
3          2012-03-03 12:24:42    777            0
3          2012-04-03 12:24:42    777            0
在伪代码中(以粗体显示)看起来像这样,但我似乎无法在MySQL中实现它:

从贷款金额>0的表\u NAME中选择用户\u id,并且[支付的金额值已超过60天为空]

期望输出: 将返回上述查询中的用户1和3,因为他们连续三个期间未付款

注意:到期日是一个时间戳


任何想法都将不胜感激

看起来您可以使用
DATEDIFF(date1,date1)
函数获取拖欠借款人的列表

SELECT DISTINCT
     user_id
FROM table_name n
     JOIN (SELECT user_id, max(due_date) maxDate FROM table_name GROUP BY user_id) t 
          ON n.user_id = t.user_id 
         AND n.due_date = t.maxDate
WHERE 
     loan_amount > 0
     AND paid_amount IS NULL
     AMD DATEDIFF(due_date, getdate()) > 60  

我之前的查询是错误的,请尝试此

select distinct t1.User_id
from TABLE_NAME t1
    inner join (
        select ts1.User_id, sum(ts1.Paid_Amount) as Paid_Amount_Total
        from TABLE_NAME ts1
        group by ts1.User_id
    ) t2
        on t1.User_id=t2.User_id and t1.Loan_Amount>t2.Paid_Amount_Total
)
where
    t1.Loan_Amount > 0
    and t1.User_id not in (
        select ts2.User_id
        from TABLE_NAME ts2
        where ts2.Due_Date>=DATE_SUB(NOW(), INTERVAL 60 DAY) and ts2.Paid_Amount>0
    )

t1、ts1、ts2-是表名称的别名

I删除了无关的数据库标记。请随意为您实际使用的数据库添加标记。您能否显示您希望查询从您的数据中提取哪些记录?是否可以使用时间戳作为到期日而不是日期字符串?您是否有贷款明细表?你怎么知道什么时候该付款?@Peter M我已经更新了帖子的更多细节。到期日值是一个时间戳,但t1和t2在这里指的是什么?