我正在使用下表跟踪模块内的页面浏览量:
id | page_id | user_id | session_id | created
每个页面对于某个模块都是唯一的;例如,第 14 页仅存在于模块 2 中。
我正在尝试编写一个查询,告诉我特定模块的查看会话何时开始(GROUP BY session_id),但我在订购时遇到问题。基本上,对于那个分组会话,我想返回最早的“创建”(查看会话的开始时间)和最新的 page_id(他们在模块中的距离)。
实现这一目标的最佳方法是什么?
我正在使用下表跟踪模块内的页面浏览量:
id | page_id | user_id | session_id | created
每个页面对于某个模块都是唯一的;例如,第 14 页仅存在于模块 2 中。
我正在尝试编写一个查询,告诉我特定模块的查看会话何时开始(GROUP BY session_id),但我在订购时遇到问题。基本上,对于那个分组会话,我想返回最早的“创建”(查看会话的开始时间)和最新的 page_id(他们在模块中的距离)。
实现这一目标的最佳方法是什么?
我认为您需要在选择中使用子查询:
SELECT a.session_id, MIN(a.created) as start_time,
b.page_id AS last_page, b.end_time
FROM table a
INNER JOIN
(SELECT b.session_id, MAX(b.created) as end_time, MAX(b.page_id)
FROM table b GROUP BY b.session_id)
ON a.session_id = b.session_id GROUP BY a.session_id
SELECT MIN(created), MAX(page_id)
FROM modules
GROUP BY
session_id