如何查询两个日期间刷卡N次的用户?SQL查询实现问题
调整方案
你现有的SQL存在两个核心问题:
- 未添加
GROUP BY分组逻辑,使用COUNT聚合函数时必须按用户维度分组,才能统计每个用户的刷卡次数 - 缺少日期范围的过滤条件,需要先过滤指定日期区间的刷卡记录再做统计
可用SQL模板
SELECT gebruiker.*, COUNT(pas_has_poort.Pas_pasnummer) as swipe_count FROM gebruiker INNER JOIN pas_has_poort ON gebruiker.gebruikernummer = pas_has_poort.Pas_pasnummer -- 此处添加日期过滤条件,tijd为刷卡时间字段 WHERE pas_has_poort.tijd BETWEEN '你的起始日期' AND '你的结束日期' -- 按用户编号分组,统计每个用户的刷卡次数 GROUP BY gebruiker.gebruikernummer -- 过滤刷卡次数达到N次的用户,比如≥5次就写>=5 HAVING COUNT(pas_has_poort.Pas_pasnummer) >= N
注意事项
- 日期参数需要和你数据库中
tijd字段的存储格式匹配,常见格式示例:'2024-01-01'、'2024-01-01 00:00:00' - 部分数据库要求
SELECT中出现的非聚合字段必须全部出现在GROUP BY子句中,如果你需要查询用户表的指定字段,可以把gebruiker.*替换为具体字段名,同时把这些字段补充到GROUP BY后即可 - 把
N替换为你需要的次数阈值,比如要筛选刷卡不低于5次的用户就写>=5
内容的提问来源于stack exchange,提问作者Robin
相关产品推荐
相关产品推荐

