Podczas korzystania z GROUP BY
nie możesz SELECT
pola, które nie są częścią GROUP BY
lub używane w funkcji agregującej. Jest to określone w standardzie SQL, chociaż niektóre bazy danych i tak decydują się na wykonanie takich zapytań. Ponieważ nie ma jednego prawidłowego sposobu wykonania takiego zapytania, zwykle wybierają pierwszy znaleziony wiersz i zwracają go, więc wyniki będą się nieprzewidywalnie różnić.
Wygląda na to, że chcesz powiedzieć:
„Dla każdej publikacji podaj mi sumę liczby twitterów, facebooków i linkedin dla tej publikacji”.
Jeśli tak, możesz napisać:
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;
Przekładając to na ActiveRecord/Rails... do Ciebie, nie używam tego. Wygląda na to, że to prawie to, co próbowałeś napisać, ale ActiveRecord wydaje się to manipulować, być może próbując wykonać obliczenia lokalnie.