use*_*954 2 mysql window-functions
所以,我说的是 SQL 中的 NTH_VALUE(column,n)
现在我观察到,如果我使用 order by 子句并指定与 nth_value 内部相同的列,则所选列中的前 n-1 行始终为 NULL。这是为什么?如果我想选择第三列,并且第三列存在,那么无论我是否使用 order by(同一列)子句,它都应该返回行号 1 和行号 2 的第三列?另外,有什么办法可以解决它吗?
小智 5
发生这种情况是因为 sql 使用的默认框架子句的范围介于无界的前一行和当前行之间。这意味着它只会考虑当前行之前的行来获取第 n 个值。因此,对于直到 N-1 的行,您将得到 NULL,因为第 N 个值超出了这 N-1 行。
解决方案:
如果将其更改为 over() 内无界前导和无界后继之间的范围,则使用第 N 个值窗口函数将不会获得 NULL 值。
| 归档时间: |
|
| 查看次数: |
799 次 |
| 最近记录: |