PrestoDB:选择两个日期之间的所有日期

Sas*_*ota 7 sql presto

我需要形成一个报告,在日期间隔内为每个日期提供一些信息。

我需要在单个查询中使用它(不能创建任何函数或支持表)。

我怎样才能在 PrestoDB 中实现这一点?

注意:这里这里甚至这里有很多特定于供应商的解决方案。但是它们都不能满足我的需要,因为它们要么不能在 Presto 中工作,要么不能使用表/函数。

更准确地说,这里是一个查询示例:

WITH ( query to select all dates between 2017.01.01 and 2018.01.01 ) AS dates
SELECT 
  date     date, 
  count(*) number_of_orders
FROM dates dates
LEFT JOIN order order
  ON order.created_at = dates.date
Run Code Online (Sandbox Code Playgroud)

Ike*_*ker 11

您可以使用 PrestoSEQUENCE()函数将日期序列生成为数组,然后使用UNNEST该数组作为结果集展开。

这样的事情应该适合你:

SELECT CAST(date_column AS DATE) AS DAY
FROM (
      VALUES (SEQUENCE(cast('2017-01-01' AS date), cast('2018-01-01' AS date), INTERVAL '1' DAY) ) 
    ) AS t1(date_array)
CROSS JOIN UNNEST(date_array) AS t2(date_column)
Run Code Online (Sandbox Code Playgroud)