Při použití GROUP BY
nemůžete SELECT
pole, která nejsou součástí GROUP BY
nebo se používá v agregační funkci. To je specifikováno standardem SQL, i když některé databáze se přesto rozhodnou takové dotazy provádět. Protože neexistuje jediný správný způsob, jak takový dotaz provést, mají tendenci vybrat pouze první řádek, který najdou, a vrátit jej, takže výsledky se budou nepředvídatelně lišit.
Zdá se, že se snažíte říct:
"Za každou publikaci mi získejte součet počtu twitterů, facebooků a linkedinů pro danou publikaci."
Pokud ano, můžete napsat:
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;
Překlad do ActiveRecord/Rails ... záleží na vás, já to nepoužívám. Vypadá to, že je to do značné míry to, co jste se pokusili napsat, ale zdá se, že ActiveRecord to kazí, možná se pokouší provést součty lokálně.