Использование подзапроса в функции последовательности PrestoSQL - PullRequest
0 голосов
/ 21 марта 2020

Вариант использования - я пытаюсь найти частоту покупок за неделю по набору данных. Теперь не у всех клиентов "события" происходят во все недели, и мне нужно было бы заполнить их нулевыми значениями для столбца "count".

Я пытался сделать это с помощью функции sequence Престо SQL. Однако для этого нужно, чтобы я сам получал значение максимальной недели из заказов клиента (я не хочу жестко кодировать это, поскольку результат будет переходить в инструмент BI, и я не хочу обновлять это вручную каждую неделю)

with all_orders_2020  as (select customer, cast(date_parse(orderdate, '%Y-%m-%d') as date) as order_date 
from orders 
where orderdate > '2020-01-01' and customer in (select customer from some_customers)),

orders_with_week_number as (select *, week(order_date) as week_number from all_orders_2020),

weekly_count as (select customer, week_number, count(*) as ride_count from orders_with_week_number
where customer = {{some_customer}} group by customer, week_number)

SELECT
    week_number
FROM
    (VALUES
        (SEQUENCE(1,(select max(week_number) from weekly_count)))
    ) AS t1(week_array)
CROSS JOIN
    UNNEST(week_array) AS t2(week_number)

Престо жалуется на это высказывание -

Unexpected subquery expression in logical plan: (SELECT "max"(week_number)
FROM
  weekly_count
)

Есть какие-нибудь подсказки, как это можно сделать?

...