首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在MySQL中将IFNULL与窗口函数一起使用

如何在MySQL中将IFNULL与窗口函数一起使用
EN

Stack Overflow用户
提问于 2018-07-16 03:59:53
回答 1查看 534关注 0票数 2

如何将ifnull与窗口函数一起使用?

假设我的查询结果如下,lag1是使用窗口函数向下移动的预算列,因此,值为null。但是我想用一个零替换这个空值,这样我就可以计算预算和lag1之间的差值了。

代码语言:javascript
复制
select id, budget,
    lag(budget) over (order by id) as lag1
    from projects;

+----+---------+---------+
| id | budget  | lag1    |
+----+---------+---------+    
|  1 | 1000000 |    NULL |  
|  2 |  100000 | 1000000 |  
|  3 |     100 |  100000 |
+----+---------+---------+

我尝试了以下两个示例,但不起作用:

代码语言:javascript
复制
select id, budget,
ifnull(lag(budget),0) over (order by id) as lag1
from projects;

select id, budget,
ifnull((lag(budget) over (order by id) as lag1),0)
from projects;
EN

回答 1

Stack Overflow用户

发布于 2018-07-16 04:16:02

lag()最多可接受三个参数。第一个是返回值的表达式。在这里,它只是列名。第二个决定它应该向后看多少行。默认值为1。第三个是您感兴趣的,如果找不到前一行,则为默认值。

因此,您可以直接在lag()调用中定义默认值:

代码语言:javascript
复制
SELECT id,
       budget,
       lag(budget, 1, 0) OVER (ORDER BY id) lag1
       FROM projects;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51351783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档