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

kelompokkan berdasarkan yang dibutuhkan dalam pernyataan SQL count(*)?

Kesalahan ini sangat masuk akal. COUNT adalah fungsi "agregat". Jadi, Anda perlu memberi tahu bidang mana yang akan digabungkan, yang dilakukan dengan GROUP BY klausa.

Salah satu yang mungkin paling masuk akal dalam kasus Anda adalah:

SELECT column_a, COUNT(*) FROM my_schema.my_table GROUP BY column_a;

Jika Anda hanya gunakan COUNT(*) klausa, Anda meminta untuk mengembalikan jumlah baris lengkap, alih-alih menggabungkan dengan kondisi lain. Pertanyaan Anda apakah GROUP BY tersirat dalam kasus itu, dapat dijawab dengan:"semacam":Jika Anda tidak menentukan apa pun, itu seperti bertanya:"kelompokkan tanpa apa-apa", yang berarti Anda akan mendapatkan satu agregat besar, yang merupakan seluruh tabel.

Sebagai contoh, mengeksekusi:

SELECT COUNT(*) FROM table;

akan menunjukkan jumlah baris dalam tabel itu, sedangkan:

SELECT col_a, COUNT(*) FROM table GROUP BY col_a;

akan menunjukkan jumlah baris per nilai col_a . Sesuatu seperti:

    col_a  | COUNT(*)
  ---------+----------------
    value1 | 100
    value2 | 10
    value3 | 123

Anda juga harus mempertimbangkan bahwa * artinya menghitung semuanya . Termasuk NULL s! Jika Anda ingin menghitung kondisi tertentu, Anda harus menggunakan COUNT(expression) ! Lihat dokumen tentang fungsi agregat untuk detail lebih lanjut tentang topik ini.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pada INSERT ke tabel INSERT data di tabel yang terhubung

  2. Apa yang baru di PostgreSQL 13?

  3. Agregat kolom dengan filter tambahan (berbeda)

  4. Memasukkan data Analitik dari Spark ke Postgres

  5. Kiat untuk Menyimpan Cadangan PostgreSQL di Amazon AWS