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.