PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

PG::Грешка в клаузата GROUP BY

Когато използвате GROUP BY не можете да SELECT полета, които не са част от GROUP BY или се използва в агрегатна функция. Това е посочено от стандарта SQL, въпреки че някои бази данни все пак избират да изпълняват такива заявки. Тъй като няма единствен правилен начин за изпълнение на такава заявка, те обикновено избират първия ред, който намерят, и го връщат, така че резултатите ще варират непредвидимо.

Изглежда, че се опитвате да кажете:

„За всяка публикация получи ми сумата от броя на twitter, facebook и linkedin за тази публикация.

Ако е така, можете да напишете:

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;

Превеждайки това в ActiveRecord/Rails ... вие решавате, аз не го използвам. Изглежда, че това е почти това, което сте се опитали да напишете, но ActiveRecord изглежда го бърка, може би се опитва да изпълни сумите локално.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вътрешно и външно съединение; важен ли е редът на таблиците от?

  2. docker postgres с първоначални данни не се запазва при комитации

  3. Heroku Postgres Грешка:PGError:ГРЕШКА:релационни организации не съществуват (ActiveRecord::StatementInvalid)

  4. Сравняване на опциите за облачна база данни за PostgreSQL

  5. jsonb срещу jsonb[] за множество адреси за клиент