Di PostgreSQL, AVG()
fungsi menghitung rata-rata (rata-rata aritmatika) dari semua nilai input bukan nol, dan mengembalikan hasilnya.
Contoh
Berikut adalah contoh cepat untuk mendemonstrasikan cara kerjanya:
SELECT AVG(amount)
FROM payment;
Hasil:
4.2006673312979002
Dalam hal ini, amount
adalah kolom di payment
meja.
Untuk memberikan sedikit lebih banyak konteks, berikut ini snapshot dari tabel (dari pagila
contoh basis data):
+------------+-------------+----------+-----------+--------+----------------------------+ | payment_id | customer_id | staff_id | rental_id | amount | payment_date | +------------+-------------+----------+-----------+--------+----------------------------+ | 16050 | 269 | 2 | 7 | 1.99 | 2017-01-24 21:40:19.996577 | | 16051 | 269 | 1 | 98 | 0.99 | 2017-01-25 15:16:50.996577 | | 16052 | 269 | 2 | 678 | 6.99 | 2017-01-28 21:44:14.996577 | | 16053 | 269 | 2 | 703 | 0.99 | 2017-01-29 00:58:02.996577 | | 16054 | 269 | 1 | 750 | 4.99 | 2017-01-29 08:10:06.996577 | | 16055 | 269 | 2 | 1099 | 2.99 | 2017-01-31 12:23:14.996577 | | 16056 | 270 | 1 | 193 | 1.99 | 2017-01-26 05:10:14.996577 | | 16057 | 270 | 1 | 1040 | 4.99 | 2017-01-31 04:03:42.996577 | | 16058 | 271 | 1 | 1096 | 8.99 | 2017-01-31 11:59:15.996577 | ...
Kita bisa melihat amount
kolom yang kami hitung rata-ratanya.
Tabel berisi lebih banyak baris, tetapi ini menunjukkan kepada Anda contoh nilainya.
Hasil yang Difilter
AVG()
fungsi beroperasi pada baris yang dikembalikan oleh kueri. Jadi jika Anda memfilter hasilnya, hasil AVG()
akan mencerminkan hal itu.
Mari kita filter hasilnya:
SELECT AVG(amount)
FROM payment
WHERE customer_id = 271;
Hasil:
3.8233333333333333
Jadi kali ini kami mendapatkan rata-rata semua jumlah yang dibayarkan oleh pelanggan 271.
Yang DISTINCT
Kata kunci
Anda dapat menggunakan DISTINCT
kata kunci dengan AVG()
untuk menghitung hanya nilai yang berbeda. Artinya, jika ada nilai duplikat, mereka diperlakukan sebagai satu nilai.
Contoh:
SELECT
AVG(amount) AS "All",
AVG(DISTINCT amount) AS "Distinct"
FROM payment;
Hasil:
+--------------------+--------------------+ | All | Distinct | +--------------------+--------------------+ | 4.2006673312979002 | 6.1447368421052632 | +--------------------+--------------------+
Dalam hal ini, ada perbedaan yang sangat besar antara hasil yang berbeda dan tidak berbeda. Ini menunjukkan bahwa ada banyak nilai duplikat di kolom tersebut.
Untuk memverifikasi ini, kami dapat menampilkan nilai yang berbeda seperti ini:
SELECT DISTINCT amount
FROM payment;
Hasil:
+--------+ | amount | +--------+ | 1.99 | | 3.98 | | 7.99 | | 5.99 | | 10.99 | | 2.99 | | 8.97 | | 8.99 | | 3.99 | | 9.98 | | 11.99 | | 7.98 | | 6.99 | | 0.00 | | 4.99 | | 5.98 | | 0.99 | | 1.98 | | 9.99 | +--------+ (19 rows)
Jadi contoh kita mengembalikan rata-rata dari nilai-nilai yang berbeda tersebut.