【发布时间】:2013-11-13 14:06:23
【问题描述】:
我在project model 中有这个查询:
report = self.reports.group(:key_id)
report.select('key_id, count(*) as count')
我需要添加什么才能从 reports 表中获取另一列 (level)?
我尝试将我的列添加到select,但这意味着我也必须对其进行分组,并且我只想获取key_id 的唯一记录
谢谢
【问题讨论】:
-
你能举一个你想要的输入和输出的例子吗?在 grouped_by 查询中选择的任何字段必须出现在 grouped_by 表达式中的 或聚合函数中的规则是 SQL 的基础。
-
输出:
[#<Report id: nil, key_id: 34>, #<Report id: nil, key_id: 14>..这就是我现在得到的,我想得到[#<Report id: nil, key_id: 34, level: 1> #<Report id: nil, key_id: 14, level 3>..,只有 key_id 应该是唯一的 -
如果你的数据库中也有(比如)
key_id: 34, level: 2怎么办?它如何选择是显示level: 1记录还是level: 2记录? -
问题是我正在对记录进行计数,我想检查有多少唯一
keys的级别 -
如果每个 key_id 只显示一条记录,那么如何计算它们?您需要按 key_id AND level 进行分组,然后计算结果,或者您需要在 level 上使用聚合函数。
标签: ruby-on-rails activerecord ruby-on-rails-3.2 ruby-on-rails-4