mysql date max,mysql – 使用MAX DATE和GROUP BY获取行

我的表名为payment_schedule,内容如下

ee1d204b83b96d14f1b7f31b9959ad88.png

我想用MAX(due_date)GROUPED BY loan_application_id获取记录

参考上面图像中的记录,我希望结果如下

3a3040dcde057f232bfa70efa166f2df.png

我尝试使用以下SQL查询

SELECT

id,

MAX(due_date) as due_date,

loan_application_id

FROM

payment_schedule

GROUP BY

loan_application_id

这返回给我以下结果.

9484942d34805eff6da5c7c46e0a587a.png

如您所见,它不会返回给定截止日期的相应ID.

另外,我有另一个名为payment_type_id的列,当payment_type_id的值为3时,我需要排除行.

我在这里尝试了几种解决方案,似乎没什么用,怎么去呢?

谢谢.

解决方法:

这称为Group-wise Maximum,在此标记为greatest-n-per-group.最传统的方法是找到所需的值并进行连接以获得每组的相应行,如下所示:

SELECT

ps.id,

ps.due_date,

ps.loan_application_id

FROM

(

SELECT

MAX(due_date) as due_date,

loan_application_id

FROM payment_schedule

WHERE payment_type_id != '3'

GROUP BY loan_application_id

) ps2

LEFT JOIN payment_schedule ps USING (loan_application_id)

WHERE ps.due_date = ps2.due_date

AND ps.payment_type_id != '3'

GROUP BY ps.loan_application_id

还值得一提的是,如果您的loan_application_id和due_date列上有索引,则此查询的运行速度将快上百倍.

标签:mysql,database,greatest-n-per-group,greatest-n-per-group

来源: https://codeday.me/bug/20190609/1202129.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值