如何计算在ROR的特定字段中具有唯一值的记录数?
时间:2020-03-05 18:45:36 来源:igfitidea点击:
我有一个包含日期字段的记录集,并想确定记录集中代表了多少个唯一的日期。
就像是:
Record.find(:all).date.unique.count
但当然,这似乎不起作用。
解决方案
回答
我们要使用的是以下SQL:
SELECT COUNT(DISTINCT date) FROM records
ActiveRecord具有以下内置功能:
Record.count('date', :distinct => true)
回答
在SQL之外:
Record.find(:all).group_by(&:date).count
ActiveSupport的Enumerable#group_by是必不可少的。
回答
另外,请确保我们在数据库中的字段上有一个索引,否则该查询将很快失效。
(在SQL中执行此操作要好得多,否则将整个数据库表拉入内存只是为了回答计数。)