PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

PG::Fehler in GROUP BY-Klausel

Bei Verwendung von GROUP BY Sie können nicht SELECT Felder, die nicht Teil von GROUP BY sind oder in einer Aggregatfunktion verwendet werden. Dies wird vom SQL-Standard vorgegeben, obwohl einige Datenbanken solche Abfragen trotzdem ausführen. Da es keinen einzigen richtigen Weg gibt, um eine solche Abfrage auszuführen, neigen sie dazu, einfach die erste gefundene Zeile auszuwählen und diese zurückzugeben, sodass die Ergebnisse unvorhersehbar variieren.

Es sieht so aus, als wollten Sie sagen:

"Für jede Veröffentlichung erhalte ich die Summe der Twitter-, Facebook- und Linkedin-Zähler für diese Veröffentlichung".

Wenn ja, könnten Sie schreiben:

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;

Übersetzen Sie das in ActiveRecord/Rails ... bis zu Ihnen, ich benutze es nicht. Es sieht so aus, als ob es ziemlich genau das ist, was Sie zu schreiben versucht haben, aber ActiveRecord scheint es zu verstümmeln, vielleicht versucht es, die Summen lokal auszuführen.