【发布时间】:2022-01-01 22:35:18
【问题描述】:
我想从我的表中选择最近 30 天的记录。我的查询如下所示:
SELECT DATE(o_date) as date, count(id) AS sum FROM customers WHERE o_date BETWEEN DATE_SUB(CURDATE(), INTERVAL 30 DAY) AND NOW() GROUP BY o_date
或者这个:
SELECT DATE(o_date) AS date, COUNT(id) AS sum FROM customers WHERE o_date >= DATE(NOW()) + INTERVAL -30 DAY GROUP BY DATE(o_date)
我想创建一个包含日期和 id-s 计数的列表。
但是在我没有确切日期的任何记录的情况下,查询只是跳过该日期。但我想在那里插入一个零。
例子:
| id | o_date |
|---|---|
| 1 | 2021-11-23 |
| 2 | 2021-11-22 |
| 3 | 2021-11-20 |
| 4 | 2021-11-20 |
| 5 | 2021-11-19 |
| 6 | 2021-11-18 |
| 7 | 2021-11-18 |
结果会是这样的:
| date | sum |
|---|---|
| 2021-11-23 | 1 |
| 2021-11-22 | 1 |
| 2021-11-20 | 2 |
| 2021-11-19 | 1 |
| 2021-11-18 | 2 |
但是在 2021 年 11 月 21 日我没有像这个例子中这样的记录的地方,我怎样才能插入总和 0?
谢谢!
更新: 我需要这个 MariaDB 查询。
【问题讨论】:
-
这能回答你的问题吗? MySQL Select last 7 days
-
SQL 标准没有日期类型。
-
您需要一个数字生成器来为缺少的日期生成日期系列,您可以在这些日期上离开并使用 sum on