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

8

我需要生成一份报告,其中提供日期区间内每个日期的一些信息。

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

如何在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

你能提供一些SQL示例来展示你想要做什么吗? - Ike Walker
@IkeWalker 添加了一个示例。 - Sasha Shpota
1个回答

13
你可以使用Presto SEQUENCE() 函数生成一系列日期数组,然后使用UNNEST将该数组展开为结果集。像这样的语句应该对你有所帮助:
SELECT date_array AS DAY
FROM UNNEST(
      SEQUENCE(
        cast('2017-01-01' AS date), 
        cast('2018-01-01' AS date), 
        INTERVAL '1' DAY
      ) 
    ) AS t1(date_array)

非常有帮助! - Ogochi
CROSS JOIN的目的是什么?这里真的有任何连接吗? - falsePockets

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接