SQLite avg()
fungsi mengembalikan nilai rata-rata dari semua nilai non-NULL dalam grup.
Ia menerima satu argumen, yang merupakan nilai atau kelompok nilai.
Contoh
Ambil tabel berikut:
ProductId ProductName Price ---------- --------------------- ---------- 1 Blue Widgets (6 Pack) 389.45 2 Widget Holder 139.5 3 Widget Opener 89.27 4 Foobar Set 120.0
Kita dapat menggunakan avg()
berfungsi untuk mendapatkan nilai rata-rata dari Harga kolom. Seperti ini:
SELECT avg(Price) FROM Products;
Hasil:
184.555
Bagaimana Klausa WHERE Mempengaruhi Hasil
Jika kueri Anda menggunakan WHERE
klausa, rata-rata akan dihitung setelah WHERE
klausa telah terpengaruh. Dengan kata lain, Anda dapat menggunakan WHERE
klausa untuk memastikan bahwa avg()
fungsi menghitung hanya baris yang Anda minati.
Inilah yang terjadi jika saya menambahkan WHERE
klausa ke contoh sebelumnya.
SELECT avg(Price)
FROM Products
WHERE ProductName LIKE '%widget%';
Hasil:
206.073333333333
Membulatkan Hasil
Hasilnya dikembalikan sebagai nilai floating point (kecuali NULL). Anda dapat menggunakan round()
berfungsi untuk membulatkan nilai sesuai kebutuhan.
SELECT round(avg(Price), 2)
FROM Products
WHERE ProductName LIKE '%widget%';
Hasil:
206.07
Membatasi Hasil
LIMIT
klausa tidak mempengaruhi perhitungan avg()
fungsi – hanya satu baris yang dikembalikan dengan avg()
tetap berfungsi.
SELECT avg(Price)
FROM Products
LIMIT 1;
Hasil:
184.555
Meskipun demikian, memberikan batas nol tidak akan menghasilkan apa pun.
String dan BLOB
Nilai string dan BLOB yang tidak terlihat seperti angka diinterpretasikan sebagai 0.
SELECT avg(ProductName) FROM Products;
Hasil:
0.0
Argumen NULL
Jika tidak ada input non-NULL, fungsi avg() mengembalikan NULL.
SELECT avg(NULL);
Hasil:
(Hasilnya adalah NULL).
Namun, jika setidaknya ada satu argumen non-NULL, maka argumen tersebut tidak akan mengembalikan NULL.
Untuk mendemonstrasikannya, di sini saya akan menyisipkan baris baru, tetapi biarkan Harga kolom di NULL:
INSERT INTO Products (ProductId, ProductName)
VALUES (5, 'Red Widget');
SELECT * FROM Products;
Hasil:
ProductId ProductName Price ---------- --------------------- ---------- 1 Blue Widgets (6 Pack) 389.45 2 Widget Holder 139.5 3 Widget Opener 89.27 4 Foobar Set 120.0 5 Red Widget
Jadi baris terakhir tidak memiliki harga – Harga kolom adalah NULL.
Sekarang ketika saya menggunakan avg()
fungsi, masih mengembalikan rata-rata semua baris non-NULL.
SELECT avg(Price) FROM Products;
Hasil:
184.555
Kata Kunci YANG BERBEDA
Anda dapat menggunakan DISTINCT
kata kunci untuk menghitung rata-rata hanya nilai yang berbeda di kolom. Ini memiliki efek menghapus nilai duplikat dari perhitungan.
Lihat Tweak Hasil Avg() Anda dalam SQLite dengan Kata Kunci DISTINCT sebagai contoh.