查找进入页面、退出页面和反弹-sql
我的表格结构如下:查找进入页面、退出页面和反弹-sql,sql,sql-server,azure-sql-database,Sql,Sql Server,Azure Sql Database,我的表格结构如下: Sessionid Pageurl timestamp abc1 /testpage1 1465374987308 abc1 /testpage2 1465375020477 abc2 /testpage2 1465374987308 我希望创建一个每页的进入页面计数、退出页面计数和反弹计数的报告 对于任何会话,第一页是进入页,最后一页是退出页 用户在查看第一页
Sessionid Pageurl timestamp
abc1 /testpage1 1465374987308
abc1 /testpage2 1465375020477
abc2 /testpage2 1465374987308
我希望创建一个每页的进入页面计数、退出页面计数和反弹计数的报告
对于任何会话,第一页是进入页,最后一页是退出页
用户在查看第一页后离开时发生跳出(会话只有一个条目)
最终报告如下
pageurl EntrypageCount ExitPagecount BounceCount
/testpage1 1 0 0
/testpage2 1 2 1
我已经能够得到反弹,但每天的基础上。
对于反弹,基本选择为
SELECT sessionid, min(timestamp),CASE WHEN count(*) = 1 THEN 1 ELSE 0 END AS bounces
FROM auditdata GROUP BY sessionid.
但无法通过pageurl找到它们
衷心感谢您的帮助
谢谢以下是一种方法()
上面使用了大多数现代RDBMS支持的窗口函数,没有窗口函数的版本将是
SELECT Pageurl,
COUNT(CASE WHEN timestamp = First THEN 1 END) AS EntrypageCount,
COUNT(CASE WHEN timestamp = Last THEN 1 END) AS ExitPagecount,
COUNT(CASE WHEN Count = 1 THEN 1 END) AS BounceCount
FROM auditdata a
JOIN (SELECT Sessionid,
MIN(timestamp) AS First,
MAX(timestamp) AS Last,
COUNT(*) AS Count
FROM auditdata
GROUP BY Sessionid) g
ON a.Sessionid = g.Sessionid
GROUP BY Pageurl;
您能展示一些示例数据和预期结果吗?您使用的是什么RDBMS?我使用的是sql server,但在云上,因此并非所有功能都会改变,但它可能会改变,因此我更喜欢可以在任何数据库上运行的基本sql代码
SELECT Pageurl,
COUNT(CASE WHEN timestamp = First THEN 1 END) AS EntrypageCount,
COUNT(CASE WHEN timestamp = Last THEN 1 END) AS ExitPagecount,
COUNT(CASE WHEN Count = 1 THEN 1 END) AS BounceCount
FROM auditdata a
JOIN (SELECT Sessionid,
MIN(timestamp) AS First,
MAX(timestamp) AS Last,
COUNT(*) AS Count
FROM auditdata
GROUP BY Sessionid) g
ON a.Sessionid = g.Sessionid
GROUP BY Pageurl;