Bij gebruik van GROUP BY
je kunt niet SELECT
velden die geen deel uitmaken van de GROUP BY
of gebruikt in een geaggregeerde functie. Dit wordt gespecificeerd door de SQL-standaard, hoewel sommige databases ervoor kiezen om dergelijke query's toch uit te voeren. Omdat er niet één juiste manier is om zo'n zoekopdracht uit te voeren, hebben ze de neiging om gewoon de eerste rij te kiezen die ze vinden en die terug te sturen, dus de resultaten zullen onvoorspelbaar variëren.
Het lijkt erop dat je probeert te zeggen:
"Geef me voor elke publicatie de som van het aantal twitter, facebook en linkedin voor die publicatie".
Zo ja, dan zou je kunnen schrijven:
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;
Dat vertalen naar ActiveRecord/Rails ... aan jou, ik gebruik het niet. Het lijkt erop dat het zo'n beetje is wat je probeerde te schrijven, maar ActiveRecord lijkt het te manipuleren, misschien probeert het de sommen lokaal uit te voeren.