我想问问Postgres有多少次出现一次事件,每行一次。例如,如果我有以下用户事件:
然后我会看到模式((按钮1,第2页)=>(按钮2,第3页))计为两次出现。
这是可能的,如果是的话,怎么样?
答案 0 :(得分:0)
这是一个非常好的问题,并且有一个相当简单的解决方案。使用GROUP BY
和HAVING
找出哪个用户显示了哪种重复行为。
请参阅小提琴示例 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
干杯!