SQLite3:为所有ID选择N个最小值
假设我有一个表SQLite3:为所有ID选择N个最小值,sql,sqlite,aggregate-functions,Sql,Sqlite,Aggregate Functions,假设我有一个表my_table,它有一列ID,还有一列Date,所有这些记录都是唯一的 我想为所有ID选择N个日期最少的记录。如果我想在N=1时这样做,我有以下几点 SELECT * FROM my_table r WHERE r.Date = (SELECT Min(Date) FROM my_table WHERE ID = r.ID) 如何将其推广到更高的N?SQLite允许以下语法: SELECT r.* FROM my_table r WHERE r.Date IN
my_table
,它有一列ID
,还有一列Date
,所有这些记录都是唯一的
我想为所有ID选择N个日期最少的记录。如果我想在N=1时这样做,我有以下几点
SELECT
*
FROM my_table r
WHERE
r.Date = (SELECT Min(Date) FROM my_table WHERE ID = r.ID)
如何将其推广到更高的N?SQLite允许以下语法:
SELECT r.*
FROM my_table r
WHERE r.Date IN (SELECT Date FROM my_table WHERE ID = r.ID ORDER BY Date LIMIT 5);
很有魅力,谢谢。对于N=1,比我的初始方法快5倍。出于兴趣,是否有一种简单的方法可以指定某个ID必须有>=N条记录才能选择前N条?@rwolst。您必须对聚合值进行额外的比较。