rails postgreSQL не может заставить этот запрос работать (SUM, Group Order) - PullRequest
1 голос
/ 21 июня 2011

Этот запрос работает, когда я пытаюсь выполнить его в SQLite:

Transaction.where(:paid => true).select("created_at, SUM(amount) amount").group("DATE(created_at)").order('created_at')

Но когда я запускаю его с postgreSQL, он не работает.Вот сообщение об ошибке:

ActiveRecord::StatementInvalid: PGError: ERROR:  column "transactions.created_at" must appear in the GROUP BY clause or be used in an aggregate function : SELECT created_at, SUM(amount) as amount FROM "transactions" WHERE ("transactions"."paid" = 't') GROUP BY DATE(created_at) ORDER BY created_at

Кто-нибудь, кто может мне помочь?

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 21 июня 2011

Вы выбираете created_at, sum(amount), заказываете по created_at, но группируете по date(created_at). Последний запретит использование чего-либо, кроме сгруппированных по полям и агрегатам, кроме как в предложении join / where.

Чтобы исправить, либо сгруппируйте по created_at, либо выберите и упорядочите по date(created_at) вместо created_at.

1 голос
/ 21 июня 2011

Вы должны либо использовать DATE(created_at) в предложении select, либо использовать created_at в предложении group by.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...