t表
字段有:姓名,身份证号,开单时间,金额,其中开单时间是datetime类型,其余是varchar
情况:一人一年内有多次开单记录
目标:查找一周内超过2次的开单记录,例如:张三有3条记录,4月1日10时、4月8日13时、4月12日7时,输出张三,4月8日和4月12日的记录,而忽略4月1日的记录。
中间过程有按一周分组吧??
看过论坛内很多代码,有按小时统计,按天统计,需要现在日期不确定,所以长了很久,真不会。谢谢各位了。
t表
字段有:姓名,身份证号,开单时间,金额,其中开单时间是datetime类型,其余是varchar
情况:一人一年内有多次开单记录
目标:查找一周内超过2次的开单记录,例如:张三有3条记录,4月1日10时、4月8日13时、4月12日7时,输出张三,4月8日和4月12日的记录,而忽略4月1日的记录。
中间过程有按一周分组吧??
看过论坛内很多代码,有按小时统计,按天统计,需要现在日期不确定,所以长了很久,真不会。谢谢各位了。
取每行时间lead、lag窗口over(partition by user)然后计算日期差是否在七天之内就好。
select * from (
select *, lead(开单时间) over(partition by 用户) lead_time, lag(开单时间) over(partition by 用户) lag_time from t ) tmp where lag_time - 开单时间 < 7 or 开单时间 - lead_time < 7
时间计算自己改一下