为什么查询:
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
结果。
我希望为每个用户选择MAX或MIN时间的行。
答案 0 :(得分:2)
我担心你不得不在这里使用子查询。
SELECT id, probe_time
FROM app_states
WHERE probe_time = (SELECT MAX(probe_time) from app_states GROUP BY logon_id)
BTW ,SQLite对MIN / MAX进行了有趣的优化:
如果存在适当的指数,以下形式的查询将被优化为以对数时间运行:
SELECT MIN(x) FROM table; SELECT MAX(x) FROM table;
为了进行这些优化,它们必须以上面显示的形式出现 - 仅更改表和列的名称。不允许添加WHERE子句或对结果执行任何算术运算。结果集必须包含单个列。 MIN或MAX函数中的列必须是索引列。