Rails / Postgres:列必须出现在group by子句中

时间:2011-10-27 15:09:40

标签: ruby-on-rails postgresql

所以Postgres抱怨:

PGError: ERROR:  column "sessions.created_at" must appear in the GROUP BY clause or be used in an aggregate function

但麻烦的是,“created_at” 出现在group by子句中:

SELECT     created_at, count(id) as visit_count FROM       "sessions"  WHERE     ("sessions"."site_id" IN (4, 3)) AND ("sessions"."created_at" >= '2011-10-20 00:00:00.000000') AND ("sessions"."created_at" <= '2011-10-27 23:59:59.999999') GROUP BY  date(created_at))

是否与包含在date()中的created_at有关?

提前致谢!

1 个答案:

答案 0 :(得分:4)

不,它没有出现。

GROUP BY包含date(created_at),而您的SELECT列表仅包含created_at。如果created_at是时间戳,那么这些是两个不同的东西。

您需要使用GROUPY BY created_atSELECT date(created_at)(可能是后者)