tgoop.com/big_data_systems_analysis/190
Create:
Last Update:
Last Update:
Разбираемся с дублями
Если вашу выборку нужно почистить от дублей, вы можете сделать это очень просто:
SELECT *
FROM your_table
QUALIFY ROW_NUMBER() OVER(PARTITION BY column_id ORDER BY column_dt DESC) = 1;
В результате получим в выводе только уникальные строки (вместо *, конечно же, указываем корректный список полей).
QUALIFY + ROW_NUMBER()
= никаких лишних подзапросов Недостаток: пока что работает не во всех СУБД
Если СУБД не поддерживает оператор QUALIFY, можем чистить так:
WITH cte AS (
SELECT *,
ROW_NUMBER() OVER (PARTITION BY column_id ORDER BY column_dt DESC) AS rn
FROM your_table
)
SELECT *
FROM cte
WHERE rn = 1;
P.S. Про сам
QUALIFY
я уже писала здесь.#sql