質問

次の表を使用してモジュール内のページビューを追跡しています:

id | page_id | user_id | session_id | created

各ページは特定のモジュールに固有です。たとえば、ページ14はモジュール2にのみ存在します。

特定のモジュールの表示セッションが開始された時間(GROUP BY session_id)を通知するクエリを作成しようとしていますが、注文に問題があります。基本的に、そのグループ化されたセッションでは、最も早い「作成された」(表示セッションの開始時間)と最新のpage_id(それらがモジュール内に到達した距離)を返します。

これを達成する最良の方法は何ですか?

役に立ちましたか?

解決

selectでサブクエリを利用する必要があると思います:

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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top