【问题标题】:Finding data patterns in sequential Postgresql rows在顺序 Postgresql 行中查找数据模式
【发布时间】:2014-01-26 03:06:30
【问题描述】:

我想询问 Postgres 一个事件发生两次的频率,每行一次发生一次。例如,如果我有这样的用户事件:

  • 用户 1:单击按钮 1,重定向到页面 2
  • 用户 1:单击按钮 2,重定向到页面 3
  • 用户 1:点击按钮 18,重定向到页面 100
  • 用户 1:单击按钮 1,重定向到页面 2
  • 用户 1:单击按钮 2,重定向到页面 3

然后我会看到模式 ((button 1, page 2) => (button 2, page 3)) 算作两次出现。

这可能吗?如果可以,怎么做?

【问题讨论】:

    标签: sql database postgresql data-mining


    【解决方案1】:

    这是一个非常好的问题,并且有一个相当简单的解决方案。使用GROUP BYHAVING 找出哪个用户表现出什么样的重复行为。

    请参阅小提琴示例 here,其中讨论了 DDL 和我用来获得所需结果的查询。

    根据您的描述,我建议您创建一个用于存储用户事件的表,如下所示:

    CREATE TABLE t_clickevent (
       clickevent_id        INTEGER,
       user_id              INTEGER,
       clicked_button_id   INTEGER,
       redirected_url_id   INTEGER);
    

    根据需要添加更多列。这只是一个最小的结构。

    使用如下查询:

    SELECT user_id, clicked_button_id,
           redirected_url_id
      FROM t_clickevent
    GROUP BY user_id, clicked_button_id,
           redirected_url_id
    HAVING count(*) > 1;
    

    输出:

    USER_ID     CLICKED_BUTTON_ID     REDIRECTED_URL_ID
    ----------- --------------------- -----------------
    1           1                     2
    1           2                     3
    

    干杯!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-20
      • 1970-01-01
      • 2016-03-06
      • 2013-08-04
      • 2013-07-21
      • 1970-01-01
      • 1970-01-01
      • 2017-11-12
      相关资源
      最近更新 更多