当按多个属性分组时,我试图找到前 n 条记录。我相信它与这个问题有关,但我很难根据我的情况调整所描述的解决方案。
为简化起见,我有一个包含列的表(did 是 device_id 的缩写):
id int
did int
dateVal dateTime
我试图找到每天最多行的前 n 个 device_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 解释都将不胜感激。