PostgreSQL中基于2个条件的COUNT值



我想在PostgreSQL中写一个查询:用户通过产品页面返回网站的会话的平均会话页面视图数。

会话用户id[/tr>696产品<199>预订详细信息<199>产品<199>产品ddcbb9ddcbb9产品产品产品产品产品>产品产品
时间页面类型
12 14:16:15 709位置
5 20:18:49 de1 d8d 位置
13 15:58:23 199
13 16:00:07f4c
13 16:04:55f4c
13 16:04:58f4c其他
11 14:08:23 4c1 58f
12 21:16:52产品
12 21:17:38产品
6 6:28:06 eb3 c57
6 6:28:10 eb3 c57 产品
6 6:48:32 eb3 c57
6 6:48:36 eb3 c57
8 5:42:56 86b c57
8 5:42:59 86b c57
8 5:43:05 86b c57 预订详细信息
10 15:48:536dcc57
10 17:23:12 586 c57

好!由于没有人回答我的问题,我终于自己找到了答案,你可以找到如下。请注意,答案是基于MYSQL而不是PostgreSQL编写的。此外,以下列名称已被替换:

session_id=sessionid,userid=user_fingerprint,page_type=page_views

很抱歉,给您带来不便!我不想编辑我的首字母。

SELECT COUNT(e.sessionid)/COUNT(DISTINCT e.session_id) 'PageViews/Sessions'
FROM page_views e
JOIN (
SELECT a.PRIMARY_KEY , a.user_fingerprint, c.sessions_per_user, a.session_id, 
a.page_type
FROM page_views a
JOIN (
SELECT b.user_fingerprint, COUNT(DISTINCT b.session_id) sessions_per_user
FROM page_views b
GROUP BY b.user_fingerprint
) AS c ON a.user_fingerprint = c.user_fingerprint
GROUP BY a.session_id
HAVING (c.sessions_per_user > 1 AND RTRIM(a.page_type) = 'product') AND
(a.PRIMARY_KEY NOT IN(
SELECT MIN(d.PRIMARY_KEY)
FROM page_views d
GROUP BY d.user_fingerprint
))
) f ON f.session_id=e.session_id
;

它对我有效,我希望它对你也有效!

最新更新