我在使用 IGNORE NULLS 参数的 Vertica FIRST_VALUE() 分析函数中看到意外行为。它似乎在不应该返回 NULL 的时候返回 NULL。
问题出现在这个非常小的表中:
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');
Run Code Online (Sandbox Code Playgroud)
以下是表的内容(从 temp 中选择 *):
time_ | name
------------------------+--------
2016-03-18 20:32:16.144 | <null>
2016-03-18 20:52:09.062 | abc
Run Code Online (Sandbox Code Playgroud)
这是我正在运行的查询:
select time_,
first_value(name ignore nulls) over (order by time_) first_name
from temp;
Run Code Online (Sandbox Code Playgroud)
以下是该查询返回的结果:
time_ | first_name
------------------------+------------
2016-03-18 20:32:16.144 | <null>
2016-03-18 20:52:09.062 | …Run Code Online (Sandbox Code Playgroud)