假设我们有一个具有以下模式的表:
| ID | DATE | VALUE |
| ------------- |:-------------:| -----:|
| 1 | '2016-08-01' | 1600 |
| 9 | '2016-03-03' | 12 |
| 1 | '2016-08-21' | 1 |
| 4 | '2016-09-01' | 1 |
| .... .... .... |
如何在行日期后的n天内高效地查找表中不包含具有相同id的记录的所有行?
简单地说,目标是为每个用户找到“最后一个操作”(之后至少n天内用户没有任何操作)
2条答案
按热度按时间jecbmhm31#
听起来很清楚:)
当然,您必须将语法(尤其是与日期相关的语法)与目标数据库相匹配。
xytpbqjk2#
你可以用这个
lead
窗口功能。这将比使用相关子查询执行得更好:这假设您的日期字段是一个时间戳。如果是字符串,则使用
datediff
.请注意
next_date is null
part确保您还可以获得结果集中最新的用户记录,因为很明显,它后面没有过快的日期。