0

我有以下代码,它可以让我知道每天写了多少行。

SELECT
  ingestion_time,
  COUNT(ingestion_time) AS Rows_Written,
FROM
  `workday.ingestions`
GROUP BY
  ingestion_time
ORDER BY
  ingestion_time

这会给我一些如下所示的东西:

摄取时间 Rows_Written
2021 年 1 月 2 日 8
2021 年 1 月 5 日 5
2021 年 1 月 8 日 9
2021 年 1 月 9 日 2

但是,我希望能够添加缺少的日期,以便表格看起来像这样:

摄取时间 Rows_Written
2021 年 1 月 2 日 8
2021 年 1 月 3 日 0
2021 年 1 月 4 日 0
2021 年 1 月 5 日 5
2021 年 1 月 6 日 0
2021 年 1 月 7 日 0
2021 年 1 月 8 日 9
2021 年 1 月 9 日 2

我该怎么做呢?是否需要创建一个包含所有日期的整个表并以某种方式加入它,还是有其他方法?提前致谢。

4

1 回答 1

0

考虑以下方法

select date(Ingestion_Time) Ingestion_Time, Rows_Written 
from your_current_query union all
select day, 0 from (
  select *, lead(Ingestion_Time) over(order by Ingestion_Time) next_time 
  from your_current_query
), unnest(generate_date_array(date(Ingestion_Time) + 1, date(next_time) - 1)) day            

如果适用于您问题中的样本数据 - 输出是

在此处输入图像描述

于 2022-01-13T23:45:23.623 回答