我有一个模型,它包含“日期”和“频率”字段(频率是整数)。我想要每个日期的前五个最高频率。
基本上,我想按日期分组,然后获取每个组的前五个。
到目前为止,我只能检索出每个组中的前1个。
我想要每天的最大频率加上第二、第三、第四和第五大的频率。很抱歉如果这很简单或者我的术语不正确;我刚开始学习Rails :)
Observation.channel("channelOne").order('date', 'frequency desc').group(:date).having('frequency = MAX(frequency)')
我想要每天的最大频率加上第二、第三、第四和第五大的频率。很抱歉如果这很简单或者我的术语不正确;我刚开始学习Rails :)
ROW_NUMBER()
函数(https://dev59.com/enI-5IYBdhLWcg3wW3Cp),并将其与“find_by_sql” ActiveRecord方法(http://apidock.com/rails/ActiveRecord/Base/find_by_sql/class)相结合。您应该能够确定适当的请求以按日期检索前5个最频繁的Observations。 - romainsallesObservation.find_by_sql("SELECT date, frequency FROM ( SELECT frequency, date AS created_at, id, ROW_NUMBER() OVER (PARTITION BY date ORDER BY date DESC, frequency DESC) AS rank FROM observations where channel = 'channelOne' ) AS o WHERE rank <= 5 ORDER BY date DESC, frequency DESC ")
- romainsalles