Når du bruger GROUP BY
du kan ikke SELECT
felter, der ikke er en del af GROUP BY
eller bruges i en aggregeret funktion. Dette er specificeret af SQL-standarden, selvom nogle databaser vælger at udføre sådanne forespørgsler alligevel. Da der ikke er en enkelt korrekt måde at udføre sådan en forespørgsel på, har de en tendens til blot at vælge den første række, de finder og returnere den, så resultaterne vil variere uforudsigeligt.
Det ser ud til, at du prøver at sige:
"For hver publikation få mig summen af twitter, facebook og linkedin tæller for den publikation".
Hvis ja, kan du skrive:
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;
At oversætte det til ActiveRecord/Rails ... op til dig, jeg bruger det ikke. Det ser ud til, at det stort set er det, du prøvede at skrive, men ActiveRecord ser ud til at ødelægge det, måske forsøger at udføre beløbene lokalt.