如何取表里每一家店最近三次日期的数据

select * FROM `tb_pkdf_ods` a where CHECK_DATE = (select max(CHECK_DATE) from `tb_pkdf_ods`)

这个是取最近一次日期的数据

FineReport 帆软用户sq30PPAlJ7 发布于 2023-11-29 14:32
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
CT1448Lv5初级互助
发布于2023-11-29 14:38(编辑于 2023-11-29 14:46)

如果有开窗函数建议用开窗。如果没有开窗可以使用

select * FROM `tb_pkdf_ods` a 

where (店,CHECK_DATE) in (

select t1.店,t1.CHECK_DATE from `tb_pkdf_ods` t1

left join `tb_pkdf_ods` t2

on t1.店=t2.店

and t1.CHECK_DATE>t2.CHECK_DATE

group by t1.店,t1.CHECK_DATE

having count(distinct t2.CHECK_DATE)<=3)

最佳回答
0
JL98Lv6中级互助
发布于2023-11-29 14:43

参考:

SQL中row_number() over(partition by)详解

https://blog.csdn.net/yilulvxing/article/details/85098273

最佳回答
0
GGGGGGGGGLv5初级互助
发布于2023-11-29 14:44

开窗函数写法:

select * from (

select a.* ,

    row_number() over (partition by a.店名 order by a.CHECK_DATE desc) rn

FROM `tb_pkdf_ods` a

) where rn <=3

  • 4关注人数
  • 128浏览人数
  • 最后回答于:2023-11-29 14:46
    请选择关闭问题的原因
    确定 取消
    返回顶部