现在存在一张请求记录表,要求Mysql查询颗粒度为天近七天的记录数,如果无当天数据也需要查询出当天的时间以及总数为0
时间: 2024-05-10 18:16:08 浏览: 145
可以使用以下 SQL 语句实现:
```sql
SELECT
DATE_FORMAT(date, '%Y-%m-%d') AS date,
COUNT(*) AS count
FROM
请求记录表
WHERE
date >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)
GROUP BY
DATE_FORMAT(date, '%Y-%m-%d')
UNION
SELECT
DATE_FORMAT(CURDATE(), '%Y-%m-%d') AS date,
0 AS count
WHERE
NOT EXISTS (
SELECT
*
FROM
请求记录表
WHERE
DATE(date) = CURDATE()
)
ORDER BY
date DESC;
```
其中,第一个 SELECT 子句查询近七天的记录数,并将日期格式化为 `%Y-%m-%d` 的形式,以便于阅读。第二个 SELECT 子句则是查询当天的时间和总数为0的记录,当且仅当不存在当天的数据时才会返回。最后通过 UNION 将两个子句的结果合并,并按日期倒序排序。
阅读全文