php - 即使在特定日期没有访问,如何编辑此查询以获得最近 7 天的访问?
问题描述
我有以下查询,它返回first_visit
从今天开始到 7 天前的日期,以及hash
每天的访问者:
SET time_zone= '{$company_timezone}';
SELECT DATE( first_visit ) AS day , COUNT( DISTINCT hash ) AS total
FROM table
WHERE company = 1 and first_visit > SUBDATE( CURDATE( ) , 7 )
GROUP BY day
这样做的缺陷是,如果company = 1
只有今天和三天前有访客,我会得到这个:
day --------- total
2020-03-08 ----- 30
2020-03-05 ----- 40
省略其间的所有其他日期。
我想要的是获得过去 7 天的所有时间,即使根本没有访客。如果没有访客,那么它应该只显示 0。
如何编辑我的查询以实现此目的?
谢谢
解决方案
如果您每天都有数据——但没有该公司的数据——那么条件聚合是一种非常简单的方法:
SELECT DATE( first_visit ) AS day ,
COUNT( DISTINCT CASE WHEN company = 1 THEN hash END ) AS total
FROM table
WHERE first_visit > SUBDATE( CURDATE( ) , 7 )
GROUP BY day;
这仅适用于某些公司的所有日期都显示在您的表格中的情况。
推荐阅读
- java - 将冒泡排序从递增切换为递减
- java - 收银机输出用于找零的面额字符串。输入是购买价格和现金
- r - R中数据框中的条件求和
- java - 怎么把数字换成钱
- spring - 在这种情况下是否真的需要 1 阶段提交(ChainedTransactionManager)而不是没有事务管理?
- python - 如何将固定字段值设置为 url_for('blueprint.route')
- ios - 从 userActivity 处理程序导航到其他视图
- javascript - 在 usestate 钩子中更新状态后,React 不会更改状态(以自定义函数形式)
- reactjs - ant.design 输入组宽度为 Col 的 100% 且不换行
- loopback - “无法读取未定义的属性‘应用’”?在环回 3