我用這個方法:軌道/ Postgres的:「必須出現在GROUP BY子句或聚合函數中使用」
def self.lines_price_report(n)
Income.group('date(filled_at)').having("date(filled_at) > ?", Date.today - n).sum(:lines_price)
end
我得到這個錯誤的Heroku:
PG::Error: ERROR: column "incomes.filled_at" must appear in the GROUP BY clause
or be used in an aggregate function
我該如何解決這個問題?謝謝。
執行的查詢:
SELECT SUM("incomes"."lines_price") AS sum_lines_price, date(filled_at)
AS date_filled_at FROM "incomes"
HAVING (date(filled_at) > '2012-12-04')
GROUP BY date(filled_at) ORDER BY filled_at ASC
預期結果
[["2012-12-04", SUM_FOR_DATE], ["2012-12-05", SUM_FOR_DATE], ...]
'reorder'可以用來覆蓋默認排序。 'unscoped'將放棄所有默認範圍,這可能是不希望的。使用'where'而不是'having'是個好主意。 – khustochka
@khustochka如果您有多個默認範圍,我同意'reorder'而不是'unsocped'。我改變了答案。 – sufleR
謝謝你的作品。爲什麼在哪裏比擁有更好?我如何在filled_at上創建一個索引? – Alex