Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Fungsi jendela AVG
Fungsi jendela AVG mengembalikan rata-rata (rata-rata aritmatika) dari nilai ekspresi masukan. Fungsi AVG bekerja dengan nilai numerik dan mengabaikan nilai NULL.
Sintaks
AVG ( [ALL ] expression ) OVER ( [ PARTITION BY expr_list ] [ ORDER BY order_list frame_clause ] )
Argumen
- ekspresi
-
Kolom target atau ekspresi tempat fungsi beroperasi.
- SEMUA
-
Dengan argumen ALL, fungsi mempertahankan semua nilai duplikat dari ekspresi untuk menghitung. ALL adalah default. DISTINCT tidak didukung.
- DI ATAS
-
Menentukan klausa jendela untuk fungsi agregasi. Klausa OVER membedakan fungsi agregasi jendela dari fungsi agregasi set normal.
- PARTISI OLEH expr_list
-
Mendefinisikan jendela untuk fungsi AVG dalam hal satu atau beberapa ekspresi.
- PESANAN BERDASARKAN order_list
-
Mengurutkan baris dalam setiap partisi. Jika tidak ada PARTITION BY yang ditentukan, ORDER BY menggunakan seluruh tabel.
- frame_clause
-
Jika klausa ORDER BY digunakan untuk fungsi agregat, klausa bingkai eksplisit diperlukan. Klausa bingkai menyempurnakan kumpulan baris di jendela fungsi, termasuk atau mengecualikan kumpulan baris dalam hasil yang diurutkan. Klausa bingkai terdiri dari kata kunci ROWS dan penentu terkait. Lihat Ringkasan sintaks fungsi jendela.
Jenis data
Tipe argumen yang didukung oleh fungsi AVG adalah SMALLINT, INTEGER, BIGINT, NUMERIC, DECIMAL, REAL, dan DOUBLE PRECISION.
Jenis pengembalian yang didukung oleh fungsi AVG adalah:
-
BIGINT untuk argumen SMALLINT atau INTEGER
-
NUMERIK untuk argumen BIGINT
-
PRESISI GANDA untuk argumen floating point
Contoh
Contoh berikut menghitung rata-rata bergulir dari jumlah yang dijual berdasarkan tanggal; pesan hasilnya berdasarkan ID tanggal dan ID penjualan:
select salesid, dateid, sellerid, qty,
avg(qty) over
(order by dateid, salesid rows unbounded preceding) as avg
from winsales
order by 2,1;
salesid | dateid | sellerid | qty | avg
---------+------------+----------+-----+-----
30001 | 2003-08-02 | 3 | 10 | 10
10001 | 2003-12-24 | 1 | 10 | 10
10005 | 2003-12-24 | 1 | 30 | 16
40001 | 2004-01-09 | 4 | 40 | 22
10006 | 2004-01-18 | 1 | 10 | 20
20001 | 2004-02-12 | 2 | 20 | 20
40005 | 2004-02-12 | 4 | 10 | 18
20002 | 2004-02-16 | 2 | 20 | 18
30003 | 2004-04-18 | 3 | 15 | 18
30004 | 2004-04-18 | 3 | 20 | 18
30007 | 2004-09-07 | 3 | 30 | 19
(11 rows)
Untuk deskripsi tabel WINSALES, lihatContoh tabel untuk contoh fungsi jendela.