2014-01-08 10 views
1

我想问问Postgres看到两次事件每行发生一次。例如,如果我有用户事件,比如:在顺序Postgresql行中查找数据模式

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

然后便见专利((按钮1,第2页)=>(按钮2,第3页))计为两次发生。

这是可能的,如果是这样,如何?

回答

0

这是一个非常好的问题,并有一个相当简单的解决方案。使用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 

干杯!