大佬教程收集整理的这篇文章主要介绍了mysql group by uid 计算连续日期差异,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_675_3@数据
uID data_date
a 2020-12-31
a 2021-01-01
a 2021-01-05
b 2021-03-02
b 2021-03-05
b 2021-03-07
@H_675_3@预期
uID date_diff
a 1
a 4
b 3
b 2
@H_409_2@mysqL 版本:5.5
在 MySQL 8+ 上,我们可以尝试将 LAG
与 DATEDIFF
一起使用:
WITH cte AS (
SELECT *,LAG(data_datE) OVER (PARTITION BY uid
ORDER BY data_datE) AS lag_data_date
FROM yourTable
)
SELECT uid,DATEDIFF(data_date,lag_data_datE) AS date_diff
FROM cte
WHERE lag_data_date IS NOT NULL
ORDER BY uid,data_date;
上面的 HAVING
子句过滤掉每个 uid
组的“第一条”记录,因为第一条记录在技术上没有任何与之关联的日期差异(您的预期输出也不包含此记录)。
@H_675_3@编辑:
这是一个应该在 MySQL 5.7 或更早版本上运行的版本。它使用相关子查询而不是 LAG()
来查找滞后日期:
SELECT uid,(SELECT t2.data_date FROM yourTable t2
WHERE t2.uid = t1.uid AND t2.data_date < t1.data_date
ORDER BY t2.data_date DESC LIMIT 1)) AS date_diff
FROM yourTable t1
HAVING date_diff IS NOT NULL
ORDER BY uid,data_date;
以上是大佬教程为你收集整理的mysql group by uid 计算连续日期差异全部内容,希望文章能够帮你解决mysql group by uid 计算连续日期差异所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。