Я вижу неожиданное поведение в аналитической функции VIRUE() с помощью параметра IGNORE NULLS. Кажется, он возвращает NULL, когда это не должно.Неожиданное поведение в FIRST_VALUE() с IGNORE NULLS (Vertica)
Проблема возникает в этом крошечном таблице:
drop table if exists temp;
create table temp (time_ timestamp(6), name varchar(10));
insert into temp (time_) values ('2016-03-18 20:32:16.144');
insert into temp (time_, name) values ('2016-03-18 20:52:09.062', 'abc');
Вот содержание таблицы (выберите * от температуры):
time_ | name
------------------------+--------
2016-03-18 20:32:16.144 | <null>
2016-03-18 20:52:09.062 | abc
Вот запрос я бегу:
select time_,
first_value(name ignore nulls) over (order by time_) first_name
from temp;
Вот результаты этого запроса возвращает:
time_ | first_name
------------------------+------------
2016-03-18 20:32:16.144 | <null>
2016-03-18 20:52:09.062 | abc
Вот результаты, которые я бы ожидать (и желания) из этого запроса:
time_ | first_name
------------------------+------------
2016-03-18 20:32:16.144 | abc
2016-03-18 20:52:09.062 | abc
есть ли выше запрос очень фундаментальная синтаксическая ошибка? Эта проблема возникает в Vertica Community Edition 7.1.1.
Очень интересно. Кажется, это скорее ошибка, чем какая-то особенность, но я рад узнать всю историю. Спасибо! – verbatross
@verbatross, см. Мой отредактированный ответ. –
Спасибо за дополнительные примеры! Супер полезно. – verbatross