sql >> Database >  >> RDS >> PostgreSQL

PG::Fout in GROUP BY-clausule

Bij gebruik van GROUP BY je kunt niet SELECT velden die geen deel uitmaken van de GROUP BY of gebruikt in een geaggregeerde functie. Dit wordt gespecificeerd door de SQL-standaard, hoewel sommige databases ervoor kiezen om dergelijke query's toch uit te voeren. Omdat er niet één juiste manier is om zo'n zoekopdracht uit te voeren, hebben ze de neiging om gewoon de eerste rij te kiezen die ze vinden en die terug te sturen, dus de resultaten zullen onvoorspelbaar variëren.

Het lijkt erop dat je probeert te zeggen:

"Geef me voor elke publicatie de som van het aantal twitter, facebook en linkedin voor die publicatie".

Zo ja, dan zou je kunnen schrijven:

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;

Dat vertalen naar ActiveRecord/Rails ... aan jou, ik gebruik het niet. Het lijkt erop dat het zo'n beetje is wat je probeerde te schrijven, maar ActiveRecord lijkt het te manipuleren, misschien probeert het de sommen lokaal uit te voeren.



  1. Zoek in een JSON-array naar een object dat een waarde bevat die overeenkomt met een patroon

  2. Hoe maak je een eenvoudige fuzzy search met alleen PostgreSQL?

  3. 1052:Kolom 'id' in veldlijst is dubbelzinnig

  4. Oracle invoegen als rij niet bestaat