我有一个正常工作的sql函数:
SELECT out_hum ,
(out_hum - LAG(out_hum, 1) OVER (ORDER BY id)) As dif
FROM excel_table
但是我想在dif等于0或大于某个值时选择所有的输出。当我输入这个代码时,我得到一个错误。。。
SELECT out_hum ,
(out_hum - LAG(out_hum, 1) OVER (ORDER BY id)) As dif
FROM excel_table WHERE dif=0
我怎么才能解决这个问题?
1条答案
按热度按时间rmbxnbpk1#
这个
where
子句无法访问中定义的表达式的别名select
子句(因为,基本上,前者是在后者之前处理的)。除此之外,还有一个对窗口函数的特殊限制,它不能出现在where
查询的子句(只允许在select
一order by
条款)。典型的解决方案是使用派生表,例如子查询:
笔记:
不需要在减法后面加括号
1
是的第二个参数的默认值lag()
,因此无需指定