Что является аналогом GENERATE_SERIES из Postgres в Presto?

#sql #presto

Вопрос:

Я хочу написать этот запрос в Presto:

     SELECT
        * 
    FROM (
        SELECT GENERATE_SERIES(0, 30) days
    )

 

Но в нем говорится, что функция GENERATE_SERIES не существует в Presto. Что я могу использовать вместо этого?

Ответ №1:

Вы можете использовать sequence с unnest :

 SELECT days
FROM (SELECT sequence(0, 30) as d)
CROSS JOIN UNNEST (d) as t(days) 
 

Комментарии:

1. thx, но затем я выбираю его: « ВЫБЕРИТЕ * ИЗ ( ВЫБЕРИТЕ GENERATE_SERIES(0, 30) дней ) КАК … ` И с вашим запросом это не сработает

2. @french_fries можете ли вы объяснить, что именно не работает для вас с предоставленным запросом? Вы можете использовать весь запрос в качестве подзапроса в своем.

3. в моем примере я могу сделать следующее: ВЫБЕРИТЕ * ИЗ ( ВЫБЕРИТЕ ПОСЛЕДОВАТЕЛЬНОСТЬ(0, 30) дней ) как q1, но не с вашим. это: SELECT days FROM (SELECT sequence(0, 30) as d) CROSS JOIN UNNEST (d) as t(days) as q1 приводит к ошибке

4. @french_fries, тогда ты это сделаешь SELECT * FROM (SELECT days FROM (SELECT sequence(0, 30) as d) CROSS JOIN UNNEST (d) as t(days) ) as q1 . В чем проблема? Весь запрос предназначен для использования в качестве аналога GENERATE_SERIES