PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

PG::Erro na cláusula GROUP BY


Ao usar GROUP BY você não pode SELECT campos que não fazem parte do GROUP BY ou usado em uma função agregada. Isso é especificado pelo padrão SQL, embora alguns bancos de dados optem por executar essas consultas de qualquer maneira. Como não há uma única maneira correta de executar essa consulta, eles tendem a apenas escolher a primeira linha que encontram e a retornam, portanto, os resultados variam de forma imprevisível.

Parece que você está tentando dizer:

"Para cada publicação me dê a soma das contagens de twitter, facebook e linkedin para aquela publicação".

Se sim, você poderia escrever:
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;

Traduzindo isso para ActiveRecord/Rails... até você, eu não uso. Parece que é praticamente o que você tentou escrever, mas o ActiveRecord parece estar desmontando, talvez tentando executar as somas localmente.