sql >> Databáze >  >> RDS >> PostgreSQL

PG::Chyba v klauzuli GROUP BY

Při použití GROUP BY nemůžete SELECT pole, která nejsou součástí GROUP BY nebo se používá v agregační funkci. To je specifikováno standardem SQL, i když některé databáze se přesto rozhodnou takové dotazy provádět. Protože neexistuje jediný správný způsob, jak takový dotaz provést, mají tendenci vybrat pouze první řádek, který najdou, a vrátit jej, takže výsledky se budou nepředvídatelně lišit.

Zdá se, že se snažíte říct:

"Za každou publikaci mi získejte součet počtu twitterů, facebooků a linkedinů pro danou publikaci."

Pokud ano, můžete napsat:

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;

Překlad do ActiveRecord/Rails ... záleží na vás, já to nepoužívám. Vypadá to, že je to do značné míry to, co jste se pokusili napsat, ale zdá se, že ActiveRecord to kazí, možná se pokouší provést součty lokálně.



  1. PHP MySQLI Zabránit SQL Injection

  2. Úvod do funkcí PL/SQL v databázi Oracle

  3. Postgresql Vyberte řádky, kde sloupec =pole

  4. Project Links nefungují na serveru Wamp