【发布时间】:2014-08-12 19:03:29
【问题描述】:
给定一个包含 timestamp 和 user 列的 MySQL 表,我希望能够计算给定用户连续存在多少天(必须以今天结束)记录。
stackoverflow/google 上的所有示例都涉及查找以前的条纹或计算总条纹,但我需要了解他们的当前条纹;
我可以使用它来查找有前一天记录的所有日期:
select date(start_of_votes.date_created)
from votes start_of_votes
left join votes previous_day
on start_of_votes.username = previous_day.username
and date(start_of_votes.date_created) - interval 1 day = date(previous_day.date_created)
where previous_day.id is not null
and start_of_votes.username = "bob"
group by date(start_of_votes.date_created) desc
但我只需要计算包含今天记录的范围。
根据请求,一些示例数据:
bob 2014-08-10 00:35:22
sue 2014-08-10 00:35:22
bob 2014-08-11 00:35:22
mike 2014-08-11 00:35:22
bob 2014-08-12 00:35:22
mike 2014-08-12 00:35:22
今天是 2014 年 8 月 12 日:
bob 连续 3 天
sue 没有当前的连续性
mike 连续 2 天
此数据是针对每个用户的,因此我将对bob 运行查询并得到3 作为结果。我不需要按用户细分的结果。
【问题讨论】:
-
您不能只使用用户变量 + 1 保持运行总计,然后将结果限制在当天给您“连续天数”吗?
-
能补充一些相关数据吗?
-
添加了一些示例数据
-
@xQbert 如果我可以“只是”做某事,我就不会问了。如果我错过了一些对我来说应该很明显的超级基础知识,那这不是第一次。
-
我的尝试是提供一个方向而不是精确的语法。对我来说,问题是缺少逻辑和功能知识,而不是语法错误,因此为什么我提供了方向而不是具体的解决方案....但是既然您似乎想要更多...请参阅下面的回复。