GROUP BY
を使用する場合 SELECT
はできません GROUP BY
のいずれにも含まれないフィールド または集計関数で使用されます。これはSQL標準で指定されていますが、データベースによっては、とにかくそのようなクエリを実行することを選択します。このようなクエリを実行する正しい方法は1つもないため、最初に見つけた行を選択して返す傾向があるため、結果は予期せず変化します。
あなたが言おうとしているようです:
「出版物ごとに、その出版物のTwitter、Facebook、LinkedInのカウントの合計を取得してください。」
もしそうなら、あなたは書くことができます:
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;
それをActiveRecord/Railsに変換する...あなた次第ですが、私はそれを使用しません。あなたが書き込もうとしたものとほぼ同じように見えますが、ActiveRecordはそれを巧みに操っているようで、おそらくローカルで合計を実行しようとしています。