Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
LAGfungsi jendela
Fungsi LAG jendela mengembalikan nilai untuk baris pada offset tertentu di atas (sebelum) baris saat ini di partisi.
Sintaks
LAG (value_expr [, offset ]) [ IGNORE NULLS | RESPECT NULLS ] OVER ( [ PARTITION BY window_partition ] ORDER BY window_ordering )
Argumen
- value_expr
-
Kolom target atau ekspresi tempat fungsi beroperasi.
- mengimbangi
-
Parameter opsional yang menentukan jumlah baris sebelum baris saat ini untuk mengembalikan nilai untuk. Offset dapat berupa bilangan bulat konstan atau ekspresi yang mengevaluasi ke bilangan bulat. Jika Anda tidak menentukan offset, Amazon Redshift
1
menggunakan sebagai nilai default. Offset0
menunjukkan baris saat ini. - IGNORE NULLS
-
Spesifikasi opsional yang menunjukkan bahwa Amazon Redshift harus melewati nilai nol dalam penentuan baris mana yang akan digunakan. Nilai nol disertakan jika IGNORE NULLS tidak terdaftar.
catatan
Anda dapat menggunakan COALESCE ekspresi NVL atau untuk mengganti nilai null dengan nilai lain. Untuk informasi selengkapnya, lihat NVLdan COALESCE fungsi.
- RESPECT NULLS
-
Menunjukkan bahwa Amazon Redshift harus menyertakan nilai nol dalam penentuan baris mana yang akan digunakan. RESPECTNULLSdidukung secara default jika Anda tidak menentukan IGNORENULLS.
- OVER
-
Menentukan jendela partisi dan pemesanan. OVERKlausul tidak dapat berisi spesifikasi bingkai jendela.
- PARTITIONOLEH window_partition
-
Argumen opsional yang menetapkan rentang catatan untuk setiap kelompok dalam OVER klausa.
- ORDEROLEH window_ordering
-
Mengurutkan baris dalam setiap partisi.
Fungsi LAG jendela mendukung ekspresi yang menggunakan salah satu tipe data Amazon Redshift. Jenis pengembalian sama dengan tipe value_expr.
Contoh
Contoh berikut menunjukkan jumlah tiket yang dijual kepada pembeli dengan ID pembeli 3 dan waktu pembeli 3 membeli tiket. Untuk membandingkan setiap penjualan dengan penjualan sebelumnya untuk pembeli 3, kueri mengembalikan jumlah sebelumnya yang dijual untuk setiap penjualan. Karena tidak ada pembelian sebelum 1/16/2008, nilai jual kuantitas pertama sebelumnya adalah nol:
select buyerid, saletime, qtysold, lag(qtysold,1) over (order by buyerid, saletime) as prev_qtysold from sales where buyerid = 3 order by buyerid, saletime; buyerid | saletime | qtysold | prev_qtysold ---------+---------------------+---------+-------------- 3 | 2008-01-16 01:06:09 | 1 | 3 | 2008-01-28 02:10:01 | 1 | 1 3 | 2008-03-12 10:39:53 | 1 | 1 3 | 2008-03-13 02:56:07 | 1 | 1 3 | 2008-03-29 08:21:39 | 2 | 1 3 | 2008-04-27 02:39:01 | 1 | 2 3 | 2008-08-16 07:04:37 | 2 | 1 3 | 2008-08-22 11:45:26 | 2 | 2 3 | 2008-09-12 09:11:25 | 1 | 2 3 | 2008-10-01 06:22:37 | 1 | 1 3 | 2008-10-20 01:55:51 | 2 | 1 3 | 2008-10-28 01:30:40 | 1 | 2 (12 rows)