如何在记录表中按URL和日期分组计算URL的浏览时长
如果你的访问记录表包含url、访问时间类型的access_time字段,可直接用以下语句实现需求:
MySQL 语法
SELECT url, DATE(access_time) AS 访问日期, MIN(access_time) AS 首次访问时间, MAX(access_time) AS 末次访问时间, TIMESTAMPDIFF(SECOND, MIN(access_time), MAX(access_time)) AS 访问时长_秒 FROM 你的表名 GROUP BY url, DATE(access_time);
PostgreSQL 语法
SELECT url, DATE_TRUNC('day', access_time)::DATE AS 访问日期, MIN(access_time) AS 首次访问时间, MAX(access_time) AS 末次访问时间, EXTRACT(EPOCH FROM (MAX(access_time) - MIN(access_time)))::INTEGER AS 访问时长_秒 FROM 你的表名 GROUP BY url, DATE_TRUNC('day', access_time)::DATE;
SQL Server 语法
SELECT url, CAST(access_time AS DATE) AS 访问日期, MIN(access_time) AS 首次访问时间, MAX(access_time) AS 末次访问时间, DATEDIFF(SECOND, MIN(access_time), MAX(access_time)) AS 访问时长_秒 FROM 你的表名 GROUP BY url, CAST(access_time AS DATE);
使用时把你的表名替换成实际的表名,字段名如果和示例不一致也对应替换即可。需要其他时长单位时修改时间差函数的第一个参数,比如把SECOND换成MINUTE即可得到分钟为单位的访问时长。
内容的提问来源于stack exchange,提问作者George
相关产品推荐
相关产品推荐

