本帖最后由 zpy2 于 2021-5-31 21:27 编辑
感觉有点烧脑。。。
WITH RECURSIVE 父(行,客户ID,访问时间第几天,父访问时间第几天,时间间隔) AS ( select min(rowid) 行,客户ID,访问时间第几天,1000 父访问时间第几天,1000-访问时间第几天 时间间隔 from 客户访问时间明细表 group by 客户ID UNION SELECT 子.rowid,子.客户ID,子.访问时间第几天,父.访问时间第几天,子.访问时间第几天-父.访问时间第几天 FROM 客户访问时间明细表 子 JOIN 父 ON 子.客户ID=父.客户ID and cast(子.访问时间第几天 as integer)>cast(父.访问时间第几天 as integer)) select *,count(*),group_concat(访问时间第几天) from 父 where 时间间隔<10 group by 客户ID,父访问时间第几天 having count(*)>2 limit 300
行 | 客户ID | 访问时间第几天 | 父访问时间第几天 | 时间间隔 | count(*) | group_concat(访问时间第几天) | 377 | 34 | 137 | 129 | 8 | 3 | 135,136,137 | 53 | 4 | 177 | 170 | 7 | 3 | 175,176,177 | 514 | 48 | 145 | 136 | 9 | 3 | 137,139,145 | 702 | 67 | 96 | 88 | 8 | 3 | 89,93,96 | 89 | 7 | 177 | 168 | 9 | 3 | 175,176,177 | 90 | 7 | 181 | 175 | 6 | 3 | 176,177,181 |
|