Pelajaran 23 / 37 · Pengelompokan

count(*), count(col) dan count(DISTINCT col) menghitung hal yang berbeda

Pesanan 108 berstatus paid tetapi tidak punya amount. count(*) tetap menghitungnya, count(amount) tidak, dan sum(amount) diam-diam mengabaikannya. count(DISTINCT customer_id) menghitung setiap pelanggan satu kali saja, berapa pun jumlah pesanannya. Langkah agregat menunjukkan berapa NULL yang diabaikan setiap fungsi.

Query-nya

SELECT status, count(*) AS all_rows, count(amount) AS with_amount,
       count(DISTINCT customer_id) AS customers, sum(amount) AS total
FROM orders
GROUP BY status

Coba count(DISTINCT amount): untuk paid hasilnya 9, bukan 11, karena tiga pesanan paid bernilai sama, 189.

Berikutnya: WHERE menyaring baris, HAVING menyaring grup · Semua pelajaran