PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Fungsi AVG() di PostgreSQL

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dapatkan nama tabel sumber baris saat menanyakan induk yang diwarisinya

  2. Memperbarui JLabel melalui SetIcon dari tipe data bytea di postgres

  3. Koneksi ditolak (PGError) (postgresql dan Rails)

  4. Kesalahan saat menghubungkan ke postgresql menggunakan sqlalchemy

  5. Objek Besar sialan itu