Tag: group by

在Rails中按月和年份分组记录

我在Ruby 1.9.2,Rails 3.0.x上使用MySQL DB。 我有一个消息模型,每天都可以发布新消息。 我有一个索引操作,我想显示按月和年分组的这些消息。 这基本上用于过滤消息。 我的查询如下: – @active_msgs = Messages.where(‘expiry > ?’, Time.now).order(‘created_at DESC’) 在参考这篇文章之后,我在Rails中使用了group_by函数 我的分组查询是: – @msgs_by_month = @active_msgs.all.group_by {|u| u.created_at.month } 我收到了一个叫做@msgs_by_month的Hash。 这有助于我按月对消息进行分组,但我需要考虑这一年, 以形成一个独特的密钥 ,因为它可以帮助我区分例如,2011年9月和2012年9月。 我当前的键只有Hash [Month]类型(例如Hash [9] => 9月份,我可以显示所有适当的值)。 如何获得一个月,年类型的唯一键,我可以轻松循环显示按月和创建年份分组的所有记录。 谢谢 编辑 : – 我猜测一种方法是使用这里提供的created_at.to_date api。 我只是想知道,如何从created_at.to_date 删除当天获取一个可以与group_by函数一起使用的 唯一月份和年份组合键 。

group_by在rails中由2个或更多属性组成

我有一个作为数组返回的@bunch模型 每个模型都有属性 – commentable_id和commentable_type (多态关联) 我想通过可评论的方式对模型进行分组,但如果我这样做的话 @bunch.group_by(&:commentable) 它还从数据库中提取可注释的内容,这是不需要的。 我可以做@bunch.group_by(&:commentable_id)但这会引起一些混淆,因为可以有几种类型的可评论模型 有没有办法group_by commentable_id AND commentable_type ?

按年龄范围分组用户在ruby中

我正在尝试按年龄范围列出用户数量: Range : #Users 10-14 : 16 15-21 : 120 22-29 : 312 30-40 : 12131 41-70 : 612 71-120 : 20 我在考虑创建一个静态的哈希数组: AGE_RANGES = [ {label:”10 – 14″, min:10, max:14}, {label:”15 – 21″, min:15, max:21}, {label:”22 – 29″, min:22, max:29}, {label:”30 – 40″, min:30, max:40}, {label:”41 – 70″, min:41, max:70}, {label:”71 – 120″, min:71, […]

如何使用MongoDB Ruby Driver进行“分组”(分组)?

使用Ruby驱动程序与MongoDB Group相关 如果我想在SQL中执行以下操作: select page_id, count(page_id) from a_table group by page_id 我认为MongoDB的文档说 http://api.mongodb.org/ruby/current/Mongo/Collection.html#group-instance_method group(key, condition, initial, reduce, finalize = nil) # returns an array 所以从另一篇文章中,我正在使用: Analytic.collection.group( “fucntion (x) return {page_id : x.page_id}”, nil, {:count => 0}, “function(x, y) { y.count++ }” ) 但它实际上会回来 [{“count”=>47.0}] 这是集合中记录(文档)的总数。 以上是不正确的? 我以为密钥可能是一个静态字符串 http://kylebanker.com/blog/2009/11/mongodb-count-group/ db.pageviews.group( { key: {‘user.agent’: true}, initial: {sum: […]

GroupingError:错误:列“”必须出现在GROUP BY子句中或用于聚合函数

我正在尝试创建一个留下评论的独特患者列表。 代码字很好,直到我上传到heroku,它在postgresql中不起作用。 这是我创建列表的Ruby .erb代码: Lastest comment from ago @comments在控制器中定义为: def index @comments = current_clinician.comments.order(“created_at desc”) end heroku日志给我这个错误信息: PG::GroupingError: ERROR: column “comments.id” must appear in the GROUP BY clause or be used in an aggregate function LINE 1: SELECT “comments”.* FROM “comments” WHERE comments”.”clini… ^ SELECT “comments”.* *FROM “comments” WHERE “comments”.”clinician_id” = $1 GROUP BY patient_id […]

我如何按天而不是按日期分组?

好的,我有 >> list = Request.find_all_by_artist(“someBand”) => [#<Request id: 1, artist: "someBand", song: "someSong", venue: "Knebworth – Stevenage, United Kingdom", showdate: "2011-07-01", amount: nil, user_id: 2, created_at: "2011-01-01 18:14:08", updated_at: "2011-01-01 18:14:09"…………. 然后 list.group_by(&:created_at).map {|k,v| [k, v.length]}.sort => [[Sat, 01 Jan 2011 18:14:08 UTC +00:00, 10], [Sun, 09 Jan 2011 18:34:19 UTC +00:00, 1], [Sun, 09 […]