【发布时间】:2018-05-17 19:39:31
【问题描述】:
我试图在按多个属性分组时查找前 n 条记录。我相信它与this problem 有关,但我很难根据我的情况调整所描述的解决方案。
为简化起见,我有一个包含列的表(did 是 device_id 的缩写):
id int
did int
dateVal dateTime
我正在尝试查找每一天的前 n 个设备 ID,其中行数最多。
例如(忽略id和dateTime的时间部分),
did dateVal
1 2017-01-01
1 2017-01-01
1 2017-01-01
2 2017-01-01
3 2017-01-01
3 2017-01-01
1 2017-01-02
1 2017-01-02
2 2017-01-02
2 2017-01-02
2 2017-01-02
3 2017-01-02
找到前 2 个将产生...
1, 2017-01-01
3, 2017-01-01
2, 2017-01-02
1, 2017-01-02
我目前的幼稚方法只给我所有日期的前 2 名。
--Using SQLite
select date(dateVal) || did
from data
group by date(dateVal), did
order by count(*) desc
limit 2
我正在使用连接运算符,以便以后可以提取行。
我正在使用 SQLite,但任何一般的 SQL 解释都将不胜感激。
【问题讨论】:
标签: sqlite greatest-n-per-group limit-per-group