rails 3:列出的最佳SQL查询+计算字段的所有现有值?

时间:2011-05-10 18:35:34

标签: sql ruby-on-rails activerecord

是否存在针对rails 3 /活动记录的SQL查询,这些记录执行大部分/全部工作以使用字段包含的所有值(和计数)填充数组或哈希值?

例如,客户所在的所有城市名称的列表(和计数):

如果customer.city包含dallas,paris,chicago,dallas,houston,dallas,paris

我需要生成列表

chicago 1
dallas 3
houston 1
paris 2

当然通过迭代很容易实现,但我认为在一个好的SQL查询中有大部分/全部工作的方法吗?

3 个答案:

答案 0 :(得分:2)

我很困惑......你的意思是这样吗?

Customer.group('city').count

答案 1 :(得分:1)

SELECT city_name, count(city_name) FROM customers GROUP BY city_name

答案 2 :(得分:0)

def dup_hash
inject(Hash.new(0)) { |h,e| h[e] += 1; h }.select {
|k,v| v > 0 }.inject({}) { |r, e| r[e.first] = e.last; r }
end
puts customer.city.dup_hash

你可以在irb中尝试这个。