När du använder GROUP BY
du kan inte SELECT
fält som inte är en del av GROUP BY
eller används i en aggregerad funktion. Detta specificeras av SQL-standarden, även om vissa databaser väljer att köra sådana frågor ändå. Eftersom det inte finns något enda korrekt sätt att utföra en sådan fråga tenderar de att bara välja den första raden de hittar och returnera den, så resultaten kommer att variera oförutsägbart.
Det verkar som att du försöker säga:
"För varje publikation skaffa mig summan av antalet twitter, facebook och linkedin för den publikationen."
Om så är fallet kan du skriva:
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;
Att översätta det till ActiveRecord/Rails ... upp till dig, jag använder det inte. Det ser ut som att det i stort sett är vad du försökte skriva men ActiveRecord verkar ha manglar det, kanske försöker köra summorna lokalt.