У меня есть два запроса, почти аналогичные:Влияние QUALIFY SUM (1) НАРУШЕНИЕ (РАЗРЕШЕНИЕ ПО БЕЗОПАСНОМУ ПРЕОБРАЗОВАНИЮ) = 1?
SELECT *
FROM table
QUALIFY SUM(1) OVER (PARTITION BY id_field ROWS UNBOUNDED PRECEDING) = 1;
и
SELECT *
FROM table
QUALIFY SUM(1) OVER (PARTITION BY id_field) = 1;
Я не могу понять, почему на ROWS UNBOUNDED PRECEDING
имеет никакого влияния на запросы.
Для меня казалось бы, что оба запроса дадут тот же результат, поскольку функция SUM не использует какой-либо столбец моей таблицы, и поэтому ROWS UNBOUNDED PRECEDING не повлияет на SUM.
Но на самом деле первый запрос дает больше строк в результате второго, когда я его выполняю.
В чем разница между двумя запросами, и каков эффект ROWS UNBOUNDED PRECEDING для данного QUALIFY?
Что вы на самом деле пытаетесь сделать? – Andrew
'ROWS UNBOUNDED PRECEDING' без' order by'? –
Я пытаюсь получить одну строку для каждого отдельного id_field, основываясь на самой последней дате другого столбца. В исходном запросе был поле ORDER BY по дате, но я удалил его в вопросе, чтобы сосредоточиться на том, почему количество строк в результатах моих запросов отличается. – user20085