をレールに--upgrading集約関数で使用することが、私は、この新しいエラーは、私が手オフに取り除くことができていない:は、GROUP BY句に現れなければならないか、私は4をレールにレール3.2からアップグレードしています4
answer_query = Answer.joins(:question).where(:created_at => start..finish, :question_id => questions_evaluation, :survey_id => survey_id)
sum = answer_query.select("sum(CAST(answer AS FLOAT)/(length(questions.possible_answers) - length(replace(questions.possible_answers,';','')) + 1)) as rating").first['rating'].to_f
だからエラーが2行目に起こっている:
PG::GroupingError: ERROR: column "answers.id" must appear in the GROUP BY clause or be used in an aggregate function LINE 1: ...IN (3778, 3779, 3780, 3783, 3786, 3788) ORDER BY "answers"....^: SELECT sum(CAST(answer AS FLOAT)/(length(questions.possible_answers) - length(replace(questions.possible_answers,';','')) + 1)) as rating FROM "answers" INNER JOIN "questions" ON "questions"."id" = "answers"."question_id" WHERE "answers"."survey_id" = $1 AND ("answers"."created_at" BETWEEN '2016-03-28 00:00:00.000000' AND '2016-04-03 23:59:59.999999') AND "answers"."question_id" IN (3778, 3779, 3780, 3783, 3786, 3788) ORDER BY "answers"."id" ASC LIMIT 1
私のクエリは次のようです。
私はunscoped
を提案したようにhereと追加しようとしましたが、質問表に関する別のエラーが発生します。
他の記事は、ワイルドカードを取り外す示唆しているので、私は(「答え、questions.possible_answers」).selectを追加しましたが、その後私は
は、私が試して他に何かわからない取得column "answers.*" must appear in the GROUP BY clause or be used in an aggregate function