PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

PG::Kesalahan dalam klausa GROUP BY

Saat menggunakan GROUP BY Anda tidak dapat SELECT bidang yang bukan merupakan bagian dari GROUP BY atau digunakan dalam fungsi agregat. Ini ditentukan oleh standar SQL, meskipun beberapa database tetap memilih untuk mengeksekusi kueri tersebut. Karena tidak ada satu cara yang benar untuk mengeksekusi kueri seperti itu, mereka cenderung hanya memilih baris pertama yang mereka temukan dan mengembalikannya, jadi hasilnya akan bervariasi secara tak terduga.

Sepertinya Anda mencoba mengatakan:

"Untuk setiap publikasi, berikan saya jumlah akun twitter, facebook, dan linkedin untuk publikasi itu".

Jika demikian, Anda dapat menulis:

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;

Diterjemahkan ke ActiveRecord/Rails ... terserah Anda, saya tidak menggunakannya. Sepertinya cukup banyak yang Anda coba tulis tetapi ActiveRecord tampaknya mengacaukannya, mungkin mencoba mengeksekusi penjumlahan secara lokal.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Gunakan \copy psql untuk kueri multi-baris

  2. Lewati beberapa set atau larik nilai ke suatu fungsi

  3. Status Manajemen Cadangan Sumber Terbuka Saat Ini untuk PostgreSQL

  4. Nilai NULL fungsi Postgres untuk baris yang mereferensikan BARU

  5. Kembalikan set catatan (tabel virtual) dari fungsi