Khi sử dụng GROUP BY
bạn không thể SELECT
các trường không phải là một phần của GROUP BY
hoặc được sử dụng trong một hàm tổng hợp. Điều này được chỉ định bởi tiêu chuẩn SQL, mặc dù một số cơ sở dữ liệu vẫn chọn thực hiện các truy vấn như vậy. Vì không có cách chính xác duy nhất nào để thực hiện một truy vấn như vậy, họ có xu hướng chỉ chọn hàng đầu tiên họ tìm thấy và trả về hàng đó, vì vậy kết quả sẽ thay đổi không thể đoán trước.
Có vẻ như bạn đang cố nói:
"Đối với mỗi ấn phẩm, hãy lấy cho tôi tổng số lượt đếm trên twitter, facebook và linkedin cho ấn phẩm đó".
Nếu vậy, bạn có thể viết:
SELECT publication,
sum(twitter_count) AS twitter_sum,
sum(linkedin_count) AS linkedin_sum,
sum(facebook_count) AS facebook_sum
FROM "articles"
WHERE "articles"."user_id" = 1
GROUP BY publication;
Dịch nó thành ActiveRecord / Rails ... tùy thuộc vào bạn, tôi không sử dụng nó. Có vẻ như đó là khá nhiều thứ bạn đã cố gắng viết nhưng ActiveRecord dường như đang làm hỏng nó, có lẽ đang cố gắng thực thi các tổng cục bộ.