Когато използвате GROUP BY
не можете да SELECT
полета, които не са част от GROUP BY
или се използва в агрегатна функция. Това е посочено от стандарта SQL, въпреки че някои бази данни все пак избират да изпълняват такива заявки. Тъй като няма единствен правилен начин за изпълнение на такава заявка, те обикновено избират първия ред, който намерят, и го връщат, така че резултатите ще варират непредвидимо.
Изглежда, че се опитвате да кажете:
„За всяка публикация получи ми сумата от броя на 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 изглежда го бърка, може би се опитва да изпълни сумите локално.