MySQLクエリの順序付けデータの2つの方法
-
08-07-2019 - |
質問
次の表を使用してモジュール内のページビューを追跡しています:
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
所属していません StackOverflow