次のクエリがあります。
SELECT
EXTRACT (
HOUR
FROM
interventions.created_at :: TIMESTAMP
) AS DATE,
COUNT (interventions. ID) AS total
FROM
"interventions"
INNER JOIN medical_records ON (
(
medical_records.medical_recordable_type = 'Intervention'
)
AND (
medical_records.medical_recordable_id = interventions. ID
)
)
INNER JOIN patients ON (
patients. ID = medical_records.patient_id
)
WHERE
(
interventions.created_at BETWEEN '2011-11-10 00:00:00'
AND '2014-11-10 00:00:00'
)
AND (
medical_records.hospitalization = FALSE
)
AND (
patients.birth_date BETWEEN '1892-12-31 23:50:39'
AND '2013-12-31 22:59:59'
)
GROUP BY
DATE
ORDER BY
interventions. ID DESC,
DATE ASC
そして、次のエラーが表示されます。
PG::GroupingError: ERROR: column "interventions.id" must appear in the GROUP BY clause or be used in an aggregate function
ここに私のコードの関連部分があります:
query = query.select("EXTRACT(HOUR FROM interventions.created_at::timestamp) AS date, COUNT(interventions.id) AS total")
query = query.group("EXTRACT(HOUR FROM interventions.created_at::timestamp)")
query = query.order("EXTRACT(HOUR FROM interventions.created_at::timestamp) ASC")
列「interventions.id」はselect内のCOUNT()関数で使用されているため、わかりません。
この問題を解決する方法について何か考えはありますか?
ありがとうございました。