Quando si utilizza GROUP BY
non puoi SELECT
campi che non fanno parte del GROUP BY
o utilizzato in una funzione aggregata. Questo è specificato dallo standard SQL, sebbene alcuni database scelgano comunque di eseguire tali query. Poiché non esiste un unico modo corretto per eseguire una query del genere, tendono a selezionare semplicemente la prima riga che trovano e a restituirla, quindi i risultati varieranno in modo imprevedibile.
Sembra che tu stia cercando di dire:
"Per ogni pubblicazione dammi la somma dei conteggi di twitter, facebook e linkedin per quella pubblicazione".
Se sì, potresti scrivere:
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;
Traducendolo in ActiveRecord/Rails... dipende da te, io non lo uso. Sembra che sia più o meno quello che hai provato a scrivere, ma ActiveRecord sembra storpiarlo, forse cercando di eseguire le somme localmente.