苏州网站设计公司官网,聚名网认证,做网站需要什么知识,手表购买网站这次#xff0c;我要从**last_value()**开始写#xff01;
last_value()
众所周知#xff0c;first_value() 和 last_value() 的作用是返回窗口中某个字段的第一行的值和最后一行的值。
但是在应用的时候#xff0c;突然发现使用last_value() 返回了不止一条数据#x…这次我要从**last_value()**开始写
last_value()
众所周知first_value() 和 last_value() 的作用是返回窗口中某个字段的第一行的值和最后一行的值。
但是在应用的时候突然发现使用last_value() 返回了不止一条数据这是为什么呢 这就不得不提到使用窗口函数的时候使用 row between 控制窗口的范围 有下面几种组合
rows between …… and ……unbounded preceding 前面所有行
unbounded following 后面所有行
current row 当前行
n following 后面n行
n preceding 前面n行
那我们的last_value() 默认是rows betweeen unbounded preceding and current row 这就导致了每次调用这个函数时都会从窗口中取组内第一条数据到当前行的数据集合中的最后一条这样说有点绕画个图吧 如果想要得到我的需要的一条结果应该怎么办呢 使用ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
如果是阿里云平台的MaxCompute引擎over()中不加order by
first_value()
first_value()的使用就是很正常了返回窗口分组内的第一条数据的值在此不再赘述