我有一个包含一组事件的表。事件可以是搜索,点击,打开等。每行都有一个日期列。
我试图获取第一个事件是搜索的行数,然后点击下一个事件。有没有办法在红移中使用超前/滞后来实现这一目标?
它抛出了一个错误,即聚合函数调用可能没有嵌套函数
count(CASE WHEN lead(trim(lower(event)), 1)
OVER (
ORDER BY timevalue :: TIMESTAMP ASC) = 'click' AND trim(lower(event)) = 'search'
THEN 1
ELSE NULL END) AS my_column,
答案 0 :(得分:0)
我希望您的代码能够使用子查询工作。我会把它写成:
select count(*)
from (select t.*,
lead(event) over (order by timevalue) as next_event
from t
) t
where event = 'search' and next_event = 'click';
我不希望lower()
和trim()
是必要的,但如果您的数据非常脏,则可能是。
注意:您不能将窗口函数作为参数添加到聚合函数中,因此您需要使用子查询。