クエリを実行する理由:
SELECT id, MAX(probe_time) AS Expr1
FROM app_states
GROUP BY logon_id
と
SELECT id, MIN(probe_time) AS Expr1
FROM app_states
GROUP BY logon_id
は同じid
結果になります。
すべてのユーザーの最大時間または最小時間で行を選択したいと考えています。
クエリを実行する理由:
SELECT id, MAX(probe_time) AS Expr1
FROM app_states
GROUP BY logon_id
と
SELECT id, MIN(probe_time) AS Expr1
FROM app_states
GROUP BY logon_id
は同じid
結果になります。
すべてのユーザーの最大時間または最小時間で行を選択したいと考えています。
ここでサブクエリを使用する必要があると思います。
SELECT id, probe_time
FROM app_states
WHERE probe_time = (SELECT MAX(probe_time) from app_states GROUP BY logon_id)
ところで、SQLite は MIN/MAX で興味深い最適化を行います。
次の形式のクエリは、適切なインデックスが存在すると仮定して、対数時間で実行するように最適化されます。
SELECT MIN(x) FROM table; SELECT MAX(x) FROM table;
これらの最適化を行うには、テーブルと列の名前のみを変更して、上記の形式で正確に表示する必要があります。WHERE 句を追加したり、結果に対して演算を行ったりすることは許可されていません。結果セットには 1 つの列が含まれている必要があります。MIN 関数または MAX 関数の列は、インデックス付きの列である必要があります。