FIRST_ fungsi VALUE jendela - Amazon Redshift

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

FIRST_ fungsi VALUE jendela

Diberikan kumpulan baris yang diurutkan, FIRST _ VALUE mengembalikan nilai ekspresi yang ditentukan sehubungan dengan baris pertama di bingkai jendela.

Untuk informasi tentang memilih baris terakhir dalam bingkai, lihatLAST_ fungsi VALUE jendela.

Sintaks

FIRST_VALUE( expression )[ IGNORE NULLS | RESPECT NULLS ] OVER ( [ PARTITION BY expr_list ] [ ORDER BY order_list frame_clause ] )

Argumen

ekspresi

Kolom target atau ekspresi tempat fungsi beroperasi.

IGNORE NULLS

Ketika opsi ini digunakan dengan FIRST _VALUE, fungsi mengembalikan nilai pertama dalam bingkai yang tidak NULL (atau NULL jika semua nilaiNULL).

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

Memperkenalkan klausa jendela untuk fungsi tersebut.

PARTITIONOLEH expr_list

Mendefinisikan jendela untuk fungsi dalam hal satu atau lebih ekspresi.

ORDEROLEH order_list

Mengurutkan baris dalam setiap partisi. Jika tidak ada klausa PARTITION BY yang ditentukan, ORDER BY mengurutkan seluruh tabel. Jika Anda menentukan klausa ORDER BY, Anda juga harus menentukan frame_clause.

Hasil VALUE fungsi FIRST _ tergantung pada urutan data. Hasilnya nondeterministik dalam kasus-kasus berikut:

  • Ketika tidak ada klausa ORDER BY yang ditentukan dan partisi berisi dua nilai yang berbeda untuk ekspresi

  • Ketika ekspresi mengevaluasi nilai yang berbeda yang sesuai dengan nilai yang sama dalam daftar ORDER BY.

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 ROWS kata kunci dan penentu terkait. Lihat Ringkasan sintaks fungsi jendela.

Jenis pengembalian

Fungsi-fungsi ini mendukung ekspresi yang menggunakan tipe data Amazon Redshift primitif. Tipe pengembalian sama dengan tipe data ekspresi.

Contoh

Contoh berikut menggunakan VENUE tabel dari TICKIT data sampel. Untuk informasi selengkapnya, lihat Database sampel.

Contoh berikut mengembalikan kapasitas tempat duduk untuk setiap tempat di VENUE meja, dengan hasil yang diurutkan berdasarkan kapasitas (tinggi ke rendah). VALUEFungsi FIRST _ digunakan untuk memilih nama tempat yang sesuai dengan baris pertama dalam bingkai: dalam hal ini, baris dengan jumlah kursi tertinggi. Hasilnya dipartisi berdasarkan status, jadi ketika VENUESTATE nilainya berubah, nilai pertama yang baru dipilih. Bingkai jendela tidak terbatas sehingga nilai pertama yang sama dipilih untuk setiap baris di setiap partisi.

Untuk California, Qualcomm Stadium memiliki jumlah kursi (70561) tertinggi, jadi nama ini adalah nilai pertama untuk semua baris di CA partisi.

select venuestate, venueseats, venuename, first_value(venuename) over(partition by venuestate order by venueseats desc rows between unbounded preceding and unbounded following) from (select * from venue where venueseats >0) order by venuestate; venuestate | venueseats | venuename | first_value -----------+------------+--------------------------------+------------------------------ CA | 70561 | Qualcomm Stadium | Qualcomm Stadium CA | 69843 | Monster Park | Qualcomm Stadium CA | 63026 | McAfee Coliseum | Qualcomm Stadium CA | 56000 | Dodger Stadium | Qualcomm Stadium CA | 45050 | Angel Stadium of Anaheim | Qualcomm Stadium CA | 42445 | PETCO Park | Qualcomm Stadium CA | 41503 | AT&T Park | Qualcomm Stadium CA | 22000 | Shoreline Amphitheatre | Qualcomm Stadium CO | 76125 | INVESCO Field | INVESCO Field CO | 50445 | Coors Field | INVESCO Field DC | 41888 | Nationals Park | Nationals Park FL | 74916 | Dolphin Stadium | Dolphin Stadium FL | 73800 | Jacksonville Municipal Stadium | Dolphin Stadium FL | 65647 | Raymond James Stadium | Dolphin Stadium FL | 36048 | Tropicana Field | Dolphin Stadium ...

Contoh berikut menunjukkan penggunaan IGNORE NULLS opsi dan bergantung pada penambahan baris baru ke VENUE tabel:

insert into venue values(2000,null,'Stanford','CA',90000);

Baris baru ini berisi NULL nilai untuk VENUENAME kolom. Sekarang ulangi VALUE kueri FIRST _ yang ditunjukkan sebelumnya di bagian ini:

select venuestate, venueseats, venuename, first_value(venuename) over(partition by venuestate order by venueseats desc rows between unbounded preceding and unbounded following) from (select * from venue where venueseats >0) order by venuestate; venuestate | venueseats | venuename | first_value -----------+------------+----------------------------+------------- CA | 90000 | NULL | NULL CA | 70561 | Qualcomm Stadium | NULL CA | 69843 | Monster Park | NULL ...

Karena baris baru berisi VENUESEATS nilai tertinggi (90000) dan VENUENAME ituNULL, VALUE fungsi FIRST _ kembali NULL untuk CA partisi. Untuk mengabaikan baris seperti ini dalam evaluasi fungsi, tambahkan IGNORE NULLS opsi ke argumen fungsi:

select venuestate, venueseats, venuename, first_value(venuename) ignore nulls over(partition by venuestate order by venueseats desc rows between unbounded preceding and unbounded following) from (select * from venue where venuestate='CA') order by venuestate; venuestate | venueseats | venuename | first_value ------------+------------+----------------------------+------------------ CA | 90000 | NULL | Qualcomm Stadium CA | 70561 | Qualcomm Stadium | Qualcomm Stadium CA | 69843 | Monster Park | Qualcomm Stadium ...