下面的代码生成结果,其中变量nt4对于行1,2和3为空。这看起来很奇怪。这是一个错误吗?该值应为''对于窗口函数中的所有行。
SELECT
word,
word_count, corpus,
NTH_VALUE(word,4) OVER (PARTITION BY corpus ORDER BY word_count DESC) nt4,
rank(word) over (PARTITION BY corpus ORDER BY word_count DESC) rank
FROM
[publicdata:samples.shakespeare]
答案 0 :(得分:0)
这不是错误。这是预期的
原因是 - 如果在不指定ROWS或RANGE的情况下使用ORDER BY,则ORDER BY意味着窗口从分区的开头延伸到当前行。有关详细信息,请参阅Window functions
同时,快速解释:
例如,对于" kinghenryviii
"分区
第一行的窗口只有一行,带有单词 - " the
"
第二行在窗口中有两行 - " the
"和" I
"
第三 - " the
"," I
"和" and
"
到目前为止,您看到此处没有第4行,因此值为null
对于第四行,窗口中有四行 - " the
"," I
"," and
"和" of
"
第五个 - " the
"," I
"," and
"," { {1}}"和" of
"
如你所见,从第四行开始 - 第四个值可用,它是" to
"
希望这很清楚并帮助你