Penjelasan sederhana
AVG menghitung rata-rata: total nilai dibagi banyaknya data. Sama dengan rumus AVERAGE di Excel.
Hati-hati dengan data kosong. Baris yang NULL tidak ikut dihitung sama sekali, bukan dianggap 0. Jadi rata-rata dari 100, 200, dan NULL adalah 150, bukan 100.
Sintaks
SELECT AVG(kolom)
FROM nama_tabel;
| Bagian | Keterangan |
|---|---|
kolom | Kolom angka. Baris NULL tidak ikut dihitung, baik pembilang maupun penyebutnya. |
Tanda [kurung siku] berarti bagian opsional. Kata kunci SQL tidak membedakan huruf besar-kecil, tapi menulisnya dengan huruf besar membuat query lebih mudah dibaca.
Contoh AVG
Data contoh: karyawan
Tabel karyawan
| id | nama | dept_id | kota | gaji | tgl_masuk | atasan_id |
|---|---|---|---|---|---|---|
| 1 | Andi Pratama | 3 | Bandung | 12500000 | 2019-03-11 | NULL |
| 2 | Bunga Lestari | 1 | Jakarta | 9800000 | 2020-07-01 | NULL |
| 3 | Candra Wijaya | 3 | Bandung | 8200000 | 2021-02-15 | 1 |
| 4 | Dewi Anggraini | 2 | Jakarta | 7500000 | 2022-05-09 | 6 |
| 5 | Eko Saputra | 1 | Jakarta | 6900000 | 2023-01-16 | 2 |
| 6 | Fajar Nugroho | 2 | Surabaya | 11000000 | 2018-09-03 | NULL |
| 7 | Gita Permata | 3 | Jakarta | 8200000 | 2023-08-21 | 1 |
| 8 | Hendra Gunawan | NULL | Medan | 5500000 | 2024-04-02 | NULL |
SELECT ROUND(AVG(gaji)) AS rata_gaji
FROM karyawan;
Hasil 1 baris
| rata_gaji |
|---|
| 8700000 |
Rata-rata gaji delapan karyawan, dibulatkan dengan ROUND.
Cara kerjanya, langkah demi langkah
FROM karyawan: 8 gaji diambil.- Semua gaji dijumlahkan: totalnya 69.600.000.
- Totalnya dibagi 8 orang: 8.700.000.
ROUND(...)membulatkan hasilnya supaya tidak ada angka desimal panjang.
Dipakai untuk apa di kantor?
- Rata-rata nilai belanja per transaksi.
- Rata-rata waktu pengiriman pesanan.
- Rata-rata gaji per jabatan untuk bahan evaluasi.
Kesalahan yang sering terjadi
- Lupa bahwa NULL tidak ikut dihitung. Kalau kosong seharusnya berarti 0, tulis
AVG(COALESCE(kolom, 0)). - Merata-ratakan angka yang sudah berupa rata-rata (rata-rata dari rata-rata). Hasilnya bisa menyesatkan kalau jumlah data tiap kelompok berbeda.
Progres bab Agregat & Grouping
0/6 dipelajari
Lanjut: MIN & MAX