PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

PG::Errore nella clausola GROUP BY

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.