栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

MySQL:按连续天数分组并计数组

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MySQL:按连续天数分组并计数组

您可以通过查找前一天没有签到的签到来找到每次访问的第一天。

select count(distinct date(start_of_visit.datetime))from checkin start_of_visitleft join checkin previous_day    on start_of_visit.user = previous_day.user    and start_of_visit.city = previous_day.city    and date(start_of_visit.datetime) - interval 1 day = date(previous_day.datetime)where previous_day.id is null

此查询有几个重要部分。

首先,每个签入都与前一天的任何签入相结合。但由于它是外部联接,如果前一天没有签入,联接的右侧将有

NULL
结果。该
WHERe
过滤发生在加盟之后,所以只保留那些签入从左侧那里有从右侧无。
LEFT OUTER JOIN/WHERe IS NULL
对于发现那里的东西非常方便不是

然后它会计算不同的签到日期,以确保如果用户在访问的第一天多次签到,它不会重复计算。(当我发现可能的错误时,我实际上在编辑时添加了该部分。)

编辑:我刚刚重新阅读了您针对第一个问题提出的查询。您的查询将获得给定日期的签到次数,而不是日期计数。我认为你想要这样的东西:

select count(distinct date(datetime))from checkinwhere user='some user' and city='some city'


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/517234.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号