Are*_*rel 1 postgresql activerecord group-by ruby-on-rails rails-activerecord
我试图找出某一天创建了多少条记录,以获得如下结果:
User uploaded 5 objects two days ago
User uploaded 12 objects 21 days ago
我试过了:
Flight.group("created_at::date")
Run Code Online (Sandbox Code Playgroud)
但出现错误:
ActiveRecord::StatementInvalid: PG::GroupingError: ERROR: column "flights.id" must appear in the GROUP BY clause or be used in an aggregate function
Run Code Online (Sandbox Code Playgroud)
但是当我尝试将任一直接添加id
到组字段或添加另一个时,.group
我最终都会对 和 进行分组id
,created_at
这显然不会对任何内容进行分组,因为每个匹配项只有一个实例。
我在这里缺少什么?
如果你想数数,那就数一下:
Flight.group('created_at::date').count # PostgreSQL-only
Flight.group('date(created_at)').count # PostgreSQL and AFAIK MySQL
Flight.group('cast(created_at as date)').count # Standard SQL
Run Code Online (Sandbox Code Playgroud)
这将为您提供一个以日期为键、计数为值的哈希值。否则,数据库将不知道应使用组中行中的哪些值来表示该组。如果您添加count
聚合函数,那么歧义就消失了,数据库知道您想要它做什么。
归档时间: |
|
查看次数: |
1245 次 |
最近记录: |