mysql - 没有联合的 MySQL 联合
问题描述
我想知道过去 7 天内每天有多少用户加入。看起来像这样的东西
| day | count |
| 6/19 | 53 |
| 6/18 | 23 |
| 6/17 | 55 |
| 6/16 | 153 |
| 6/15 | 93 |
| 6/14 | 86 |
我会写一个这样的查询:
SELECT SUBDATE(CURRENT_DATE(), INTERVAL 0 DAY) as `day`, count(*) as count FROM my_table WHERE DATE(created_at) = SUBDATE(CURRENT_DATE(), INTERVAL 0 DAY)
UNION ALL
SELECT SUBDATE(CURRENT_DATE(), INTERVAL 1 DAY) as `day`, count(*) as count FROM my_table WHERE DATE(created_at) = SUBDATE(CURRENT_DATE(), INTERVAL 1 DAY)
UNION ALL
SELECT SUBDATE(CURRENT_DATE(), INTERVAL 2 DAY) as `day`, count(*) as count FROM my_table WHERE DATE(created_at) = SUBDATE(CURRENT_DATE(), INTERVAL 2 DAY)
但是想象一下,我不能使用UNION ALL
orUNION
并且它必须采用相同的表格格式。SQL noob 将如何做到这一点?
谢谢
解决方案
您查询的WHERE
子句应具有created_at
大于或等于当前日期减去 6 天的条件,然后按日期分组:
SELECT DATE(created_at) day, COUNT(*) count
FROM my_table
WHERE created_at >= SUBDATE(CURRENT_DATE, INTERVAL 6 DAY)
GROUP BY day
推荐阅读
- html - SVG 线性渐变,UserSpaceOnUse
- sass - 压缩类和改变属性
- typescript - 具有同等重要的服务器端和客户端部分的项目的典型目录结构
- python - 在python中添加新列并用字符串填充
- php - 没有一种行类型的多个日期之间的小时总和
- javascript - 如何正确评估数组中的重复项?[公关]
- sql-server - 如何对阻塞会话进行硬 KILLED/ROLLBACK
- python - NameError:名称“get_transforms”未定义
- javascript - Angular Routing 改变了页面
- java - 如何关闭 iframe selenium java