将所有日期添加到 SQL 分组日期查询
Adding all dates to SQL query for grouped dates
我希望 SQL 到 return 所有日期,无论它们是否为 null 或来自以下查询的 0:
SELECT count(id) as Record_Count, delete_date as Date
FROM table
WHERE marketing_tag = 'XYZ'
GROUP BY delete_date
ORDER BY delete_date desc
当前输出:
| Record_Count | Date |
|100 | 01/07/22|
|200 | 01/05/22|
|250 | 01/02/22|
期望的输出:
| Record_Count | Date |
|100 | 01/07/22|
|0 | 01/06/22|
|200 | 01/05/22|
|0 | 01/04/22|
|0 | 01/03/22|
|250 | 01/02/22|
我没有另一个 table 日期可供参考
我的最小值应该是从查询中提取的第一个日期(在本例中为 01/02/22)然后我的最大值应该是逻辑适用的最近日期(在本例中为 01/07/22)是这个可能不创建另一个 table?
考虑以下方法
select ifnull(record_count, 0) record_count, date
from unnest((
select generate_date_array(min(delete_date), max(delete_date))
from your_table
)) date
left join (
select count(id) as record_count, delete_date as date
from your_table
where marketing_tag = 'xyz'
group by delete_date
)
using (date)
order by date desc
如果应用于您问题中的示例数据 - 输出为
我希望 SQL 到 return 所有日期,无论它们是否为 null 或来自以下查询的 0:
SELECT count(id) as Record_Count, delete_date as Date
FROM table
WHERE marketing_tag = 'XYZ'
GROUP BY delete_date
ORDER BY delete_date desc
当前输出:
| Record_Count | Date |
|100 | 01/07/22|
|200 | 01/05/22|
|250 | 01/02/22|
期望的输出:
| Record_Count | Date |
|100 | 01/07/22|
|0 | 01/06/22|
|200 | 01/05/22|
|0 | 01/04/22|
|0 | 01/03/22|
|250 | 01/02/22|
我没有另一个 table 日期可供参考 我的最小值应该是从查询中提取的第一个日期(在本例中为 01/02/22)然后我的最大值应该是逻辑适用的最近日期(在本例中为 01/07/22)是这个可能不创建另一个 table?
考虑以下方法
select ifnull(record_count, 0) record_count, date
from unnest((
select generate_date_array(min(delete_date), max(delete_date))
from your_table
)) date
left join (
select count(id) as record_count, delete_date as date
from your_table
where marketing_tag = 'xyz'
group by delete_date
)
using (date)
order by date desc
如果应用于您问题中的示例数据 - 输出为