Поддерживает ли Redshift определяемые пользователем переменные в SELECT? - PullRequest
0 голосов
/ 10 июня 2019

Я рассматриваю некоторые из наших запросов Redshift и обнаружил случаи с несколькими уровнями вложенности, как показано ниже:

    LEFT JOIN
    (
        SELECT *
        FROM (
            SELECT
                id,
                created_at,
                min(created_at) OVER (PARTITION BY id, slug) AS transition_date
            FROM table
            WHERE status = 'cancelled'
            GROUP BY id, Y, Z, created_at
        )
        WHERE created_at = transition_date
    ) t1 ON b.id = t1.id

, если бы это был MySQL, я бы сделал что-то подобное, чтобы удалитьодин уровень вложенного выбора:

    LEFT JOIN
    (
        SELECT
            id,
            created_at,
            @tdate := min(created_at) OVER (PARTITION BY id, slug) AS transition_date
        FROM table
        WHERE status = 'cancelled' and @tdate = bul.created_at
        GROUP BY id, Y, Z, created_at
    ) t1 ON b.id = t1.id

Возможно ли подобное в RedShift?

--- обновление забыло включить GROUP BY во вложенный SELECT, что может повлиять на ответ

1 Ответ

0 голосов
/ 10 июня 2019

Вы можете переместить условие для transition_date в условие JOIN:

LEFT JOIN
(
    SELECT
        id,
        created_at,
        min(created_at) OVER (PARTITION BY id, slug) AS transition_date
    FROM table
    WHERE status = 'cancelled'
) t1 ON b.id = t1.id AND t1.created_at = t1.transition_date
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...