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

PG::Fejl i GROUP BY-klausul

Når du bruger GROUP BY du kan ikke SELECT felter, der ikke er en del af GROUP BY eller bruges i en aggregeret funktion. Dette er specificeret af SQL-standarden, selvom nogle databaser vælger at udføre sådanne forespørgsler alligevel. Da der ikke er en enkelt korrekt måde at udføre sådan en forespørgsel på, har de en tendens til blot at vælge den første række, de finder og returnere den, så resultaterne vil variere uforudsigeligt.

Det ser ud til, at du prøver at sige:

"For hver publikation få mig summen af ​​twitter, facebook og linkedin tæller for den publikation".

Hvis ja, kan du skrive:

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;

At oversætte det til ActiveRecord/Rails ... op til dig, jeg bruger det ikke. Det ser ud til, at det stort set er det, du prøvede at skrive, men ActiveRecord ser ud til at ødelægge det, måske forsøger at udføre beløbene lokalt.



  1. Sådan ændres tekst til små bogstaver i SQL

  2. Brug af udvidede hændelser til at logge forældede funktioner, der bruges i en SQL Server-instans (T-SQL-eksempel)

  3. SQL Server 2008 kan ikke logge på med nyoprettet bruger

  4. Importer SQL-dump til PostgreSQL-databasen