Rails 3:列出最佳 SQL 查询计算一个字段的所有现有值?

发布于 2024-11-05 22:33:45 字数 316 浏览 0 评论 0原文

Rails 3/活动记录是否有一个 SQL 查询可以完成大部分/所有工作,用字段包含的所有值(和计数)填充数组或散列?

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

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

我需要生成列表

chicago 1
dallas 3
houston 1
paris 2

当然这很容易做到通过迭代,但我认为有一种方法可以在良好的 SQL 查询中完成大部分/所有工作?

Is there a SQL query for rails 3/active records that does most/all the work to fill an array or hash with all the values (and counts) that a field contains?

For example, a list (and count) of all the city names that customers are in:

If customer.city contains dallas, paris, chicago, dallas, houston, dallas, paris

I need to generate the list

chicago 1
dallas 3
houston 1
paris 2

Of course it's easy to do it by iterating, but I'm thinking there's a way to most/all the work in a good SQL query?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

儭儭莪哋寶赑 2024-11-12 22:33:45

我一头雾水……你的意思是这样吗?

Customer.group('city').count

I'm confused... do you mean like this?

Customer.group('city').count
思念满溢 2024-11-12 22:33:45
SELECT city_name, count(city_name) FROM customers GROUP BY city_name
SELECT city_name, count(city_name) FROM customers GROUP BY city_name
浮世清欢 2024-11-12 22:33:45

<代码>
def dup_hash
注入(Hash.new(0)) { |h,e| h[e] += 1; h }.select {
|k,v| v> 0 }.inject({}) { |r, e| r[e.first] = e.last; r }
结束
放置 customer.city.dup_hash

你可以在 irb 中尝试一下。


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

You can try this in irb.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文