sql >> Databasteknik >  >> RDS >> PostgreSQL

PG::Fel i GROUP BY-satsen

När du använder GROUP BY du kan inte SELECT fält som inte är en del av GROUP BY eller används i en aggregerad funktion. Detta specificeras av SQL-standarden, även om vissa databaser väljer att köra sådana frågor ändå. Eftersom det inte finns något enda korrekt sätt att utföra en sådan fråga tenderar de att bara välja den första raden de hittar och returnera den, så resultaten kommer att variera oförutsägbart.

Det verkar som att du försöker säga:

"För varje publikation skaffa mig summan av antalet twitter, facebook och linkedin för den publikationen."

Om så är fallet kan du skriva:

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;

Att översätta det till ActiveRecord/Rails ... upp till dig, jag använder det inte. Det ser ut som att det i stort sett är vad du försökte skriva men ActiveRecord verkar ha manglar det, kanske försöker köra summorna lokalt.



  1. Hur kontrollerar man ett saknat nummer från en serie nummer?

  2. 6 sätt att välja dubbletter av rader i Oracle

  3. De vanligaste problemen med MHA och hur man åtgärdar dem

  4. MySQL DATEDIFF() vs TIMEDIFF():Vad är skillnaden?