【发布时间】:2020-03-09 21:11:58
【问题描述】:
我很难理解这个问题。这是我所拥有的:
user_id | year
1 | 2015
1 | 2016
1 | 2018
1 | 2019
1 | 2020
2 | 2015
2 | 2016
2 | 2017
2 | 2018
2 | 2019
我需要的是结果:
user_id | count
1 | 3
2 | 5
因此,对于每个用户,我需要知道基于年份的最长连续连续条纹。用户 1 在 2017 年有差距,因此最长的连续是 2018-2020 年。用户 2 没有休息,所以他们的连续 5 年。我想确保任何间隙基本上都会重置计数。我找到了许多用于计算日期等的解决方案,但我似乎找不到一个用于增加整数值的解决方案,它基本上必须是序列中的下一个,而不仅仅是更大。我希望有一个聪明的 MySQL 兼容查询。
【问题讨论】:
-
MySQL什么版本?
-
@CaiusJard - 我一直在使用 5.7,但我要添加 8,因为我意识到使用 5.7 会更难。
标签: mysql sql sequence gaps-and-islands