问答交流

请问这样写,为什么报错Error: WHERE clause cannot contain window functions!

由bqd17wit创建,最终由bqd17wit 被浏览 10 用户

\

import dai
dai.query("""
select date,instrument,open,close,price_limit_status,
        m_lag(price_limit_status,1),m_lag(price_limit_status,2),m_lag(price_limit_status,3),
        m_lead(price_limit_status,1),m_lead(price_limit_status,2),m_lead(price_limit_status,3)
from cn_stock_factors_base
where price_limit_status=3
AND m_lag(price_limit_status,1)=3 AND m_lag(price_limit_status,2)=3 AND m_lag(price_limit_status,3)=3
AND date>'2023-01-01'
order by date,instrument
""")

想从cn_stock_factors_base中查询数据,

但是报错:InvalidInputException: Invalid Input Error: Attempting to execute an unsuccessful or closed pending query result Error: Binder Error: WHERE clause cannot contain window functions!


请问老师,是m_lag 和m_lead 函数用错了吗?

想提取:当日涨停,前一日涨停,前2日涨停,前3日涨停的股票,在未来1天,2天的涨跌停涨停状态


再请问老师, m_lag(时间序列上 arg 向下偏移 n 行后的值),是取未来值吗? 时间向下,1月1日向下就是1月2日, 那这个函数就是向未来取值吗? 但实际上又感觉不对


\

评论
  • 解答:原始字段要用WHERE筛选,计算字段,就是带m_lag的,要用QUALIFY筛选