You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vertica中查询用户购买前最后n个浏览页面的SQL实现

没问题,我来帮你实现这个需求——在Vertica中查询每个用户购买产品前最后N个浏览页面的SQL语句,下面是具体的方案:

查询每个用户购买前最后N个浏览页面的Vertica SQL

假设我们要获取每个用户每笔订单对应的购买前最后2个浏览页面(你可以把2替换成任意需要的N值),具体SQL实现如下:

WITH user_sale_page_views AS (
    SELECT
        s.sale_id,
        s.user_id,
        s.date AS sale_date,
        pv.page_id,
        pv.date AS view_date,
        -- 按用户和订单分组,对该订单前的浏览记录按时间倒序排名
        ROW_NUMBER() OVER (
            PARTITION BY s.user_id, s.sale_id
            ORDER BY pv.date DESC
        ) AS view_rank
    FROM sales s
    INNER JOIN page_views pv
        ON s.user_id = pv.user_id
        AND pv.date < s.date -- 仅保留购买之前的浏览记录
)
SELECT
    sale_id,
    user_id,
    sale_date,
    page_id,
    view_date
FROM user_sale_page_views
WHERE view_rank <= 2 -- 替换为你需要的N值
ORDER BY user_id, sale_date, view_rank;

核心细节说明:

  • 窗口函数ROW_NUMBER():按用户和订单维度分组,对每个订单对应的前置浏览记录按时间从晚到早编号,排名1就是购买前的最后一次浏览,排名2是倒数第二次,以此类推。
  • 时间过滤条件:pv.date < s.date确保我们只统计用户在下单之前的浏览行为,不会包含购买后的页面访问。
  • 灵活调整N值:只需要修改WHERE view_rank <= 2中的数字,就能快速切换要获取的“最后N个页面”数量。

针对你给出的示例数据,比如用户A在2018-05-01的订单,这个查询会筛选出page_views表中user_id为A且日期早于2018-05-01的所有记录,然后取时间最晚的2条返回。

内容的提问来源于stack exchange,提问作者llulai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 11:13:12