

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

# Fungsi jendela
<a name="Window_functions"></a>

Dengan menggunakan fungsi jendela, Anda dapat membuat kueri bisnis analitik dengan lebih efisien. Fungsi jendela beroperasi pada partisi atau “jendela” dari kumpulan hasil, dan mengembalikan nilai untuk setiap baris di jendela itu. Sebaliknya, fungsi non-windowed melakukan perhitungan mereka sehubungan dengan setiap baris dalam set hasil. Tidak seperti fungsi grup yang menggabungkan baris hasil, fungsi jendela mempertahankan semua baris dalam ekspresi tabel. 

 Nilai yang dikembalikan dihitung dengan menggunakan nilai dari kumpulan baris di jendela itu. Untuk setiap baris dalam tabel, jendela mendefinisikan satu set baris yang digunakan untuk menghitung atribut tambahan. Sebuah jendela didefinisikan menggunakan spesifikasi jendela (klausa OVER), dan didasarkan pada tiga konsep utama: 
+  *Partisi jendela,* yang membentuk kelompok baris (klausa PARTISI) 
+  *Pengurutan jendela*, yang mendefinisikan urutan atau urutan baris dalam setiap partisi (klausa ORDER BY) 
+  *Bingkai jendela*, yang didefinisikan relatif terhadap setiap baris untuk lebih membatasi set baris (spesifikasi ROWS) 

Fungsi jendela adalah rangkaian operasi terakhir yang dilakukan dalam kueri kecuali klausa ORDER BY akhir. Semua bergabung dan semua klausa WHERE, GROUP BY, dan HAVING selesai sebelum fungsi jendela diproses. Oleh karena itu, fungsi jendela hanya dapat muncul di daftar pilih atau klausa ORDER BY. Anda dapat menggunakan beberapa fungsi jendela dalam satu kueri dengan klausa bingkai yang berbeda. Anda juga dapat menggunakan fungsi jendela dalam ekspresi skalar lainnya, seperti CASE. 

## Ringkasan sintaks fungsi jendela
<a name="Window_function_synopsis"></a>

Fungsi jendela mengikuti sintaks standar, yaitu sebagai berikut.

```
function (expression) OVER (
[ PARTITION BY expr_list ]
[ ORDER BY order_list [ frame_clause ] ] )
```

 Di sini, *fungsi* adalah salah satu fungsi yang dijelaskan dalam bagian ini.

*Expr\$1list* adalah sebagai berikut.

```
expression | column_name [, expr_list ]
```

 *Order\$1list* adalah sebagai berikut. 

```
expression | column_name [ ASC | DESC ] 
[ NULLS FIRST | NULLS LAST ]
[, order_list ]
```

 *Frame\$1clause* adalah sebagai berikut. 

```
ROWS
{ UNBOUNDED PRECEDING | unsigned_value PRECEDING | CURRENT ROW } |

{ BETWEEN
{ UNBOUNDED PRECEDING | unsigned_value { PRECEDING | FOLLOWING } | CURRENT ROW}
AND
{ UNBOUNDED FOLLOWING | unsigned_value { PRECEDING | FOLLOWING } | CURRENT ROW }}
```

### Pendapat
<a name="Window_function_synopsis-arguments"></a>

 *fungsi*   
Fungsi jendela. Untuk detailnya, lihat deskripsi fungsi individual. 

DI ATAS   
Klausul yang mendefinisikan spesifikasi jendela. Klausa OVER wajib untuk fungsi jendela, dan membedakan fungsi jendela dari fungsi SQL lainnya. 

PARTISI OLEH *expr\$1list*   
(Opsional) Klausa PARTITION BY membagi hasil yang ditetapkan menjadi partisi, seperti klausa GROUP BY. Jika klausa partisi hadir, fungsi dihitung untuk baris di setiap partisi. Jika tidak ada klausa partisi yang ditentukan, partisi tunggal berisi seluruh tabel, dan fungsi dihitung untuk tabel lengkap itu.   
Fungsi peringkat DENSE\$1RANK, NTILE, RANK, dan ROW\$1NUMBER memerlukan perbandingan global dari semua baris dalam kumpulan hasil. Ketika klausa PARTITION BY digunakan, pengoptimal kueri dapat menjalankan setiap agregasi secara paralel dengan menyebarkan beban kerja di beberapa irisan sesuai dengan partisi. Jika klausa PARTITION BY tidak ada, langkah agregasi harus dijalankan secara serial pada satu irisan, yang dapat memiliki dampak negatif yang signifikan pada kinerja, terutama untuk cluster besar.  
AWS Clean Roomstidak mendukung literal string dalam klausa PARTITION BY.

PESANAN BERDASARKAN *order\$1list*   
(Opsional) Fungsi jendela diterapkan ke baris dalam setiap partisi yang diurutkan sesuai dengan spesifikasi pesanan di ORDER BY. *Klausa ORDER BY ini berbeda dari dan sama sekali tidak terkait dengan klausa ORDER BY di frame\$1clause.* Klausa ORDER BY dapat digunakan tanpa klausa PARTITION BY.   
Untuk fungsi peringkat, klausa ORDER BY mengidentifikasi ukuran untuk nilai peringkat. Untuk fungsi agregasi, baris yang dipartisi harus diurutkan sebelum fungsi agregat dihitung untuk setiap frame. Untuk selengkapnya tentang jenis fungsi jendela, lihat[Fungsi jendela](#Window_functions).  
Pengidentifikasi kolom atau ekspresi yang mengevaluasi ke pengidentifikasi kolom diperlukan dalam daftar urutan. Baik konstanta maupun ekspresi konstan tidak dapat digunakan sebagai pengganti nama kolom.   
Nilai NULLS diperlakukan sebagai grup mereka sendiri, diurutkan dan diberi peringkat sesuai dengan opsi NULLS FIRST atau NULLS LAST. Secara default, nilai NULL diurutkan dan diberi peringkat terakhir dalam urutan ASC, dan diurutkan dan diberi peringkat pertama dalam urutan DESC.  
AWS Clean Roomstidak mendukung literal string dalam klausa ORDER BY.  
 Jika klausa ORDER BY dihilangkan, urutan baris adalah nondeterministik.   
Dalam sistem paralel apa pun sepertiAWS Clean Rooms, ketika klausa ORDER BY tidak menghasilkan urutan data yang unik dan total, urutan baris adalah nondeterministik. Artinya, jika ekspresi ORDER BY menghasilkan nilai duplikat (urutan sebagian), urutan pengembalian baris tersebut dapat bervariasi dari satu proses AWS Clean Rooms ke yang berikutnya. Pada gilirannya, fungsi jendela mungkin mengembalikan hasil yang tidak terduga atau tidak konsisten. Untuk informasi selengkapnya, lihat [Urutan data yang unik untuk fungsi jendela](#Examples_order_by_WF). 

 *column\$1name*   
Nama kolom yang akan dipartisi oleh atau diurutkan oleh. 

ASC \$1 DESC   
Opsi yang mendefinisikan urutan pengurutan untuk ekspresi, sebagai berikut:   
+ ASC: naik (misalnya, rendah ke tinggi untuk nilai numerik dan 'A' ke 'Z' untuk string karakter). Jika tidak ada opsi yang ditentukan, data diurutkan dalam urutan menaik secara default.
+ DESC: turun (tinggi ke rendah untuk nilai numerik; 'Z' ke 'A' untuk string). 

NULLS PERTAMA \$1 NULLS TERAKHIR  
Opsi yang menentukan apakah NULLS harus diurutkan terlebih dahulu, sebelum nilai non-null, atau terakhir, setelah nilai non-null. Secara default, NULLS diurutkan dan diberi peringkat terakhir dalam urutan ASC, dan diurutkan dan diberi peringkat pertama dalam urutan DESC.

 *frame\$1clause*   
Untuk fungsi agregat, klausa bingkai lebih lanjut menyempurnakan kumpulan baris di jendela fungsi saat menggunakan ORDER BY. Ini memungkinkan Anda untuk memasukkan atau mengecualikan set baris dalam hasil yang diurutkan. Klausa bingkai terdiri dari kata kunci ROWS dan penentu terkait.  
Klausa bingkai tidak berlaku untuk fungsi peringkat. Selain itu, klausa bingkai tidak diperlukan ketika tidak ada klausa ORDER BY yang digunakan dalam klausa OVER untuk fungsi agregat. Jika klausa ORDER BY digunakan untuk fungsi agregat, klausa bingkai eksplisit diperlukan.  
Ketika tidak ada klausa ORDER BY yang ditentukan, bingkai tersirat tidak dibatasi, setara dengan BARIS ANTARA TIDAK TERBATAS SEBELUMNYA DAN TIDAK TERBATAS BERIKUT. 

BARIS  
Klausa ini mendefinisikan bingkai jendela dengan menentukan offset fisik dari baris saat ini.  
Klausa ini menentukan baris di jendela atau partisi saat ini yang akan digabungkan dengan nilai dalam baris saat ini. Ini menggunakan argumen yang menentukan posisi baris, yang bisa sebelum atau sesudah baris saat ini. Titik referensi untuk semua bingkai jendela adalah baris saat ini. Setiap baris menjadi baris saat ini secara bergantian saat bingkai jendela meluncur ke depan di partisi.  
Bingkai dapat berupa serangkaian baris sederhana hingga dan termasuk baris saat ini.  

```
{UNBOUNDED PRECEDING | offset PRECEDING | CURRENT ROW}
```
Atau bisa juga satu set baris antara dua batas.  

```
BETWEEN
{ UNBOUNDED PRECEDING | offset { PRECEDING | FOLLOWING } | CURRENT ROW }
AND
{ UNBOUNDED FOLLOWING | offset { PRECEDING | FOLLOWING } | CURRENT ROW }
```
UNBOUNDED PRECEDING menunjukkan bahwa jendela dimulai pada baris pertama partisi; *offset* PRECEDING menunjukkan bahwa jendela memulai sejumlah baris yang setara dengan nilai offset sebelum baris saat ini. UNBOUNDED PRECEDING adalah default.  
ROW SAAT INI menunjukkan jendela dimulai atau berakhir pada baris saat ini.   
BERIKUT TIDAK TERBATAS menunjukkan bahwa jendela berakhir pada baris terakhir partisi; *offset* BERIKUT menunjukkan bahwa jendela mengakhiri sejumlah baris yang setara dengan nilai offset setelah baris saat ini.  
*offset* mengidentifikasi jumlah fisik baris sebelum atau sesudah baris saat ini. Dalam hal ini, *offset* harus berupa konstanta yang mengevaluasi nilai numerik positif. Misalnya, 5 BERIKUT mengakhiri bingkai lima baris setelah baris saat ini.  
Dimana BETWEEN tidak ditentukan, frame secara implisit dibatasi oleh baris saat ini. Misalnya, `ROWS 5 PRECEDING` sama dengan`ROWS BETWEEN 5 PRECEDING AND CURRENT ROW`. Juga, `ROWS UNBOUNDED FOLLOWING` sama dengan`ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING`.  
Anda tidak dapat menentukan bingkai di mana batas awal lebih besar dari batas akhir. Misalnya, Anda tidak dapat menentukan salah satu frame berikut.   

```
between 5 following and 5 preceding
between current row and 2 preceding
between 3 following and current row
```

## Urutan data yang unik untuk fungsi jendela
<a name="Examples_order_by_WF"></a>

Jika klausa ORDER BY untuk fungsi jendela tidak menghasilkan urutan data yang unik dan total, urutan baris adalah nondeterministik. Jika ekspresi ORDER BY menghasilkan nilai duplikat (urutan sebagian), urutan pengembalian baris tersebut dapat bervariasi dalam beberapa kali proses. Dalam hal ini, fungsi jendela juga dapat mengembalikan hasil yang tidak terduga atau tidak konsisten. 

Misalnya, kueri berikut mengembalikan hasil yang berbeda selama beberapa proses. Hasil yang berbeda ini terjadi karena `order by dateid` tidak menghasilkan urutan data yang unik untuk fungsi jendela SUM. 

```
select dateid, pricepaid,
sum(pricepaid) over(order by dateid rows unbounded preceding) as sumpaid
from sales
group by dateid, pricepaid;

dateid | pricepaid |   sumpaid
--------+-----------+-------------
1827 |   1730.00 |     1730.00
1827 |    708.00 |     2438.00
1827 |    234.00 |     2672.00
...

select dateid, pricepaid,
sum(pricepaid) over(order by dateid rows unbounded preceding) as sumpaid
from sales
group by dateid, pricepaid;

dateid | pricepaid |   sumpaid
--------+-----------+-------------
1827 |    234.00 |      234.00
1827 |    472.00 |      706.00
1827 |    347.00 |     1053.00
...
```

 Dalam hal ini, menambahkan kolom ORDER BY kedua ke fungsi jendela dapat menyelesaikan masalah. 

```
select dateid, pricepaid,
sum(pricepaid) over(order by dateid, pricepaid rows unbounded preceding) as sumpaid
from sales
group by dateid, pricepaid;

dateid | pricepaid | sumpaid
--------+-----------+---------
1827 |    234.00 |  234.00
1827 |    337.00 |  571.00
1827 |    347.00 |  918.00
...
```

## Fungsi yang didukung
<a name="Window_function_supported"></a>

AWS Clean RoomsSpark SQL mendukung dua jenis fungsi jendela: agregat dan peringkat.

Berikut ini adalah fungsi agregat yang didukung: 
+ [Fungsi jendela CUME\$1DIST](WF_CUME_DIST.md)
+ [Fungsi jendela DENSE\$1RANK](WF_DENSE_RANK.md)
+ [Fungsi jendela PERTAMA](WF_FIRST.md)
+ [Fungsi jendela FIRST\$1VALUE](WF_first_value.md)
+ [Fungsi jendela LAG](WF_LAG.md) 
+ [Fungsi jendela TERAKHIR](WF-LAST.md)
+ [Fungsi jendela LAST\$1VALUE](WF_last_value.md)
+ [Fungsi jendela LEAD](WF_LEAD.md) 

Berikut ini adalah fungsi peringkat yang didukung: 
+ [Fungsi jendela DENSE\$1RANK](WF_DENSE_RANK.md) 
+ [Fungsi jendela PERCENT\$1RANK](WF_PERCENT_RANK.md)
+ [Fungsi jendela RANK](WF_RANK.md) 
+ [Fungsi jendela ROW\$1NUMBER](WF_ROW_NUMBER.md)

## Contoh tabel untuk contoh fungsi jendela
<a name="Window_function_example"></a>

Anda dapat menemukan contoh fungsi jendela tertentu dengan setiap deskripsi fungsi. Beberapa contoh menggunakan tabel bernama WINSALES, yang berisi 11 baris, seperti yang ditunjukkan pada tabel berikut.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/clean-rooms/latest/sql-reference/Window_functions.html)

# Fungsi jendela CUME\$1DIST
<a name="WF_CUME_DIST"></a>

Menghitung distribusi kumulatif nilai dalam jendela atau partisi. Dengan asumsi urutan naik, distribusi kumulatif ditentukan dengan menggunakan rumus ini:

`count of rows with values <= x / count of rows in the window or partition`

di mana *x* sama dengan nilai di baris kolom saat ini yang ditentukan dalam klausa ORDER BY. Dataset berikut menggambarkan penggunaan rumus ini:

```
Row#	Value	  Calculation    CUME_DIST
1        2500	   (1)/(5)	   0.2
2        2600	   (2)/(5)	   0.4
3        2800	   (3)/(5)	   0.6
4        2900	   (4)/(5)	   0.8
5        3100	   (5)/(5)	   1.0
```

Rentang nilai pengembalian adalah> 0 hingga 1, inklusif.

## Sintaksis
<a name="WF_CUME_DIST-synopsis"></a>

```
CUME_DIST ()
OVER ( 
[ PARTITION BY partition_expression ] 
[ ORDER BY order_list ]
)
```

## Argumen
<a name="WF_CUME_DIST-arguments"></a>

DI ATAS  
Sebuah klausa yang menentukan partisi jendela. Klausa OVER tidak dapat berisi spesifikasi bingkai jendela.

PARTISI OLEH *partition\$1expression*   
Tidak wajib. Ekspresi yang menetapkan rentang catatan untuk setiap grup dalam klausa OVER.

PESANAN BERDASARKAN *order\$1list*   
Ekspresi untuk menghitung distribusi kumulatif. Ekspresi harus memiliki tipe data numerik atau secara implisit dapat dikonversi menjadi satu. Jika ORDER BY dihilangkan, nilai kembalinya adalah 1 untuk semua baris.   
Jika ORDER BY tidak menghasilkan urutan unik, urutan baris adalah nondeterministik. Untuk informasi selengkapnya, lihat [Urutan data yang unik untuk fungsi jendela](Window_functions.md#Examples_order_by_WF). 

## Jenis pengembalian
<a name="WF_CUME_DIST-returns"></a>

FLOAT8

## Contoh
<a name="WF_CUME_DIST-examples"></a>

Contoh berikut menghitung distribusi kumulatif kuantitas untuk setiap penjual:

```
select sellerid, qty, cume_dist() 
over (partition by sellerid order by qty) 
from winsales;

sellerid   qty	   cume_dist
--------------------------------------------------
1         10.00	   0.33
1         10.64	   0.67
1         30.37	   1
3         10.04	   0.25
3         15.15	   0.5
3         20.75	   0.75
3         30.55	   1
2         20.09	   0.5
2         20.12	   1
4         10.12	   0.5
4         40.23	   1
```

Untuk deskripsi tabel WINSALES, lihat[Contoh tabel untuk contoh fungsi jendela](Window_functions.md#Window_function_example).

# Fungsi jendela DENSE\$1RANK
<a name="WF_DENSE_RANK"></a>

Fungsi jendela DENSE\$1RANK menentukan peringkat nilai dalam sekelompok nilai, berdasarkan ekspresi ORDER BY dalam klausa OVER. Jika klausa PARTITION BY opsional ada, peringkat diatur ulang untuk setiap kelompok baris. Baris dengan nilai yang sama untuk kriteria peringkat menerima peringkat yang sama. Fungsi DENSE\$1RANK berbeda dari RANK dalam satu hal: Jika dua atau lebih baris terikat, tidak ada celah dalam urutan nilai peringkat. Misalnya, jika dua baris diberi peringkat 1, peringkat berikutnya adalah 2. 

Anda dapat memiliki fungsi peringkat dengan klausa PARTITION BY dan ORDER BY yang berbeda dalam kueri yang sama. 

## Sintaksis
<a name="WF_DENSE_RANK-synopsis"></a>

```
DENSE_RANK () OVER
(
[ PARTITION BY expr_list ]
[ ORDER BY order_list ]
)
```

## Argumen
<a name="WF_DENSE_RANK-arguments"></a>

( )   
Fungsi ini tidak mengambil argumen, tetapi tanda kurung kosong diperlukan. 

DI ATAS   
Klausa jendela untuk fungsi DENSE\$1RANK. 

PARTISI OLEH *expr\$1list*   
Tidak wajib. Satu atau lebih ekspresi yang menentukan jendela. 

PESANAN BERDASARKAN *order\$1list*   
Tidak wajib. Ekspresi yang menjadi dasar nilai peringkat. Jika tidak ada PARTITION BY yang ditentukan, ORDER BY menggunakan seluruh tabel. Jika ORDER BY dihilangkan, nilai kembalinya adalah 1 untuk semua baris.   
Jika ORDER BY tidak menghasilkan urutan unik, urutan baris adalah nondeterministik. Untuk informasi selengkapnya, lihat [Urutan data yang unik untuk fungsi jendela](Window_functions.md#Examples_order_by_WF). 

## Jenis pengembalian
<a name="Supported_data_types_wf_dense_rank"></a>

INTEGER

## Contoh
<a name="WF_DENSE_RANK-examples"></a>

Contoh berikut memesan tabel berdasarkan kuantitas yang terjual (dalam urutan menurun), dan menetapkan peringkat padat dan peringkat reguler untuk setiap baris. Hasilnya diurutkan setelah hasil fungsi jendela diterapkan. 

```
select salesid, qty,
dense_rank() over(order by qty desc) as d_rnk,
rank() over(order by qty desc) as rnk
from winsales
order by 2,1;

salesid | qty | d_rnk | rnk
---------+-----+-------+-----
10001 |  10 |     5 |   8
10006 |  10 |     5 |   8
30001 |  10 |     5 |   8
40005 |  10 |     5 |   8
30003 |  15 |     4 |   7
20001 |  20 |     3 |   4
20002 |  20 |     3 |   4
30004 |  20 |     3 |   4
10005 |  30 |     2 |   2
30007 |  30 |     2 |   2
40001 |  40 |     1 |   1
(11 rows)
```

Perhatikan perbedaan peringkat yang ditetapkan ke kumpulan baris yang sama saat fungsi DENSE\$1RANK dan RANK digunakan berdampingan dalam kueri yang sama. Untuk deskripsi tabel WINSALES, lihat[Contoh tabel untuk contoh fungsi jendela](Window_functions.md#Window_function_example).

Contoh berikut mempartisi tabel oleh SELLERID dan memerintahkan setiap partisi dengan kuantitas (dalam urutan menurun) dan menetapkan peringkat padat untuk setiap baris. Hasilnya diurutkan setelah hasil fungsi jendela diterapkan. 

```
select salesid, sellerid, qty,
dense_rank() over(partition by sellerid order by qty desc) as d_rnk
from winsales
order by 2,3,1;

salesid | sellerid | qty | d_rnk
---------+----------+-----+-------
10001 |        1 |  10 |     2
10006 |        1 |  10 |     2
10005 |        1 |  30 |     1
20001 |        2 |  20 |     1
20002 |        2 |  20 |     1
30001 |        3 |  10 |     4
30003 |        3 |  15 |     3
30004 |        3 |  20 |     2
30007 |        3 |  30 |     1
40005 |        4 |  10 |     2
40001 |        4 |  40 |     1
(11 rows)
```

 Untuk deskripsi tabel WINSALES, lihat[Contoh tabel untuk contoh fungsi jendela](Window_functions.md#Window_function_example).

# Fungsi jendela PERTAMA
<a name="WF_FIRST"></a>

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

Untuk informasi tentang memilih baris terakhir dalam bingkai, lihat[Fungsi jendela TERAKHIR](WF-LAST.md).

## Sintaksis
<a name="WF_FIRST-synopsis"></a>

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

## Argumen
<a name="WF_FIRST-arguments"></a>

 *ekspresi*   
 Kolom target atau ekspresi tempat fungsi beroperasi. 

ABAIKAN NULLS   
Ketika opsi ini digunakan dengan FIRST, fungsi mengembalikan nilai pertama dalam frame yang bukan NULL (atau NULL jika semua nilai NULL).

RESPECT NULLS   
 Menunjukkan bahwa AWS Clean Rooms harus menyertakan nilai nol dalam penentuan baris mana yang akan digunakan. RESPECT NULLS didukung secara default jika Anda tidak menentukan IGNORE NULLS. 

DI ATAS   
Memperkenalkan klausa jendela untuk fungsi tersebut. 

PARTISI OLEH *expr\$1list*   
Mendefinisikan jendela untuk fungsi dalam hal satu atau lebih ekspresi. 

PESANAN BERDASARKAN *order\$1list*   
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\$1clause*.   
Hasil fungsi PERTAMA tergantung pada urutan data. Hasilnya nondeterministik dalam kasus-kasus berikut:   
+ Ketika tidak ada klausa ORDER BY 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\$1clause*   
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](Window_functions.md#Window_function_synopsis). 

## Jenis pengembalian
<a name="Supported_data_types_wf_first"></a>

Fungsi-fungsi ini mendukung ekspresi yang menggunakan tipe AWS Clean Rooms data primitif. Tipe pengembalian sama dengan tipe data *ekspresi*.

## Contoh
<a name="WF_FIRST-examples"></a>

Contoh berikut mengembalikan kapasitas tempat duduk untuk setiap tempat di meja VENUE, dengan hasil yang diurutkan berdasarkan kapasitas (tinggi ke rendah). Fungsi PERTAMA 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 nilai VENUESTATE 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(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
-----------+------------+--------------------------------+------------------------------
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
...
```

# Fungsi jendela FIRST\$1VALUE
<a name="WF_first_value"></a>

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

Untuk informasi tentang memilih baris terakhir dalam bingkai, lihat[Fungsi jendela LAST\$1VALUE](WF_last_value.md).

## Sintaksis
<a name="WF_first_value-synopsis"></a>

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

## Argumen
<a name="WF_first_value-arguments"></a>

 *ekspresi*   
 Kolom target atau ekspresi tempat fungsi beroperasi. 

ABAIKAN NULLS   
Ketika opsi ini digunakan dengan FIRST\$1VALUE, fungsi mengembalikan nilai pertama dalam frame yang tidak NULL (atau NULL jika semua nilai NULL).

RESPECT NULLS   
 Menunjukkan bahwa AWS Clean Rooms harus menyertakan nilai nol dalam penentuan baris mana yang akan digunakan. RESPECT NULLS didukung secara default jika Anda tidak menentukan IGNORE NULLS. 

DI ATAS   
Memperkenalkan klausa jendela untuk fungsi tersebut. 

PARTISI OLEH *expr\$1list*   
Mendefinisikan jendela untuk fungsi dalam hal satu atau lebih ekspresi. 

PESANAN BERDASARKAN *order\$1list*   
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\$1clause*.   
Hasil fungsi FIRST\$1VALUE tergantung pada urutan data. Hasilnya nondeterministik dalam kasus-kasus berikut:   
+ Ketika tidak ada klausa ORDER BY 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\$1clause*   
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](Window_functions.md#Window_function_synopsis). 

## Jenis pengembalian
<a name="Supported_data_types_wf_first_value"></a>

Fungsi-fungsi ini mendukung ekspresi yang menggunakan tipe AWS Clean Rooms data primitif. Tipe pengembalian sama dengan tipe data *ekspresi*.

## Contoh
<a name="WF_first_value-examples"></a>

Contoh berikut mengembalikan kapasitas tempat duduk untuk setiap tempat di meja VENUE, dengan hasil yang diurutkan berdasarkan kapasitas (tinggi ke rendah). Fungsi FIRST\$1VALUE 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 nilai VENUESTATE 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
...
```

# Fungsi jendela LAG
<a name="WF_LAG"></a>

 Fungsi jendela LAG mengembalikan nilai untuk baris pada offset tertentu di atas (sebelum) baris saat ini di partisi. 

## Sintaksis
<a name="WF_LAG-synopsis"></a>

```
LAG (value_expr [, offset ])
[ IGNORE NULLS | RESPECT NULLS ]
OVER ( [ PARTITION BY window_partition ] ORDER BY window_ordering )
```

## Argumen
<a name="WF_LAG-arguments"></a>

 *value\$1expr*   
 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, AWS Clean Rooms gunakan `1` sebagai nilai default. Offset `0` menunjukkan baris saat ini. 

ABAIKAN NULLS   
Spesifikasi opsional yang menunjukkan bahwa AWS Clean Rooms harus melewati nilai nol dalam penentuan baris mana yang akan digunakan. Nilai nol disertakan jika IGNORE NULLS tidak terdaftar.   
Anda dapat menggunakan ekspresi NVL atau COALESCE untuk mengganti nilai null dengan nilai lain. 

RESPECT NULLS   
 Menunjukkan bahwa AWS Clean Rooms harus menyertakan nilai nol dalam penentuan baris mana yang akan digunakan. RESPECT NULLS didukung secara default jika Anda tidak menentukan IGNORE NULLS. 

DI ATAS   
Menentukan jendela partisi dan pemesanan. Klausa OVER tidak dapat berisi spesifikasi bingkai jendela. 

PARTISI OLEH *window\$1partition*   
Argumen opsional yang menetapkan rentang catatan untuk setiap grup dalam klausa OVER. 

PESANAN DENGAN *window\$1ordering*   
Mengurutkan baris dalam setiap partisi. 

Fungsi jendela LAG mendukung ekspresi yang menggunakan salah satu tipe AWS Clean Rooms data. Jenis pengembalian sama dengan tipe *value\$1expr*. 

## Contoh
<a name="WF_LAG-examples"></a>

 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)
```

# Fungsi jendela TERAKHIR
<a name="WF-LAST"></a>

 Diberikan kumpulan baris yang diurutkan, fungsi LAST mengembalikan nilai ekspresi sehubungan dengan baris terakhir dalam bingkai. 

Untuk informasi tentang memilih baris pertama dalam bingkai, lihat[Fungsi jendela PERTAMA](WF_FIRST.md). 

## Sintaksis
<a name="WF-LAST-syntax"></a>

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

## Argumen
<a name="WF-LAST-arguments"></a>

 *ekspresi*   
 Kolom target atau ekspresi tempat fungsi beroperasi. 

ABAIKAN NULLS   
Fungsi mengembalikan nilai terakhir dalam frame yang tidak NULL (atau NULL jika semua nilai NULL). 

RESPECT NULLS   
Menunjukkan bahwa AWS Clean Rooms harus menyertakan nilai nol dalam penentuan baris mana yang akan digunakan. RESPECT NULLS didukung secara default jika Anda tidak menentukan IGNORE NULLS. 

DI ATAS   
Memperkenalkan klausa jendela untuk fungsi tersebut. 

PARTISI OLEH *expr\$1list*   
Mendefinisikan jendela untuk fungsi dalam hal satu atau lebih ekspresi. 

PESANAN BERDASARKAN *order\$1list*   
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\$1clause*.   
Hasilnya tergantung pada urutan data. Hasilnya nondeterministik dalam kasus-kasus berikut:   
+ Ketika tidak ada klausa ORDER BY 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\$1clause*   
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](Window_functions.md#Window_function_synopsis). 

## Jenis pengembalian
<a name="WF-LAST-return-type"></a>

Fungsi-fungsi ini mendukung ekspresi yang menggunakan tipe AWS Clean Rooms data primitif. Tipe pengembalian sama dengan tipe data *ekspresi*.

## Contoh
<a name="WF-LAST-examples"></a>

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

Untuk California, `Shoreline Amphitheatre` dikembalikan untuk setiap baris di partisi karena memiliki jumlah kursi terendah (`22000`). 

```
select venuestate, venueseats, venuename,
last(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            |          last
-----------+------------+--------------------------------+------------------------------
CA         |      70561 | Qualcomm Stadium               | Shoreline Amphitheatre
CA         |      69843 | Monster Park                   | Shoreline Amphitheatre
CA         |      63026 | McAfee Coliseum                | Shoreline Amphitheatre
CA         |      56000 | Dodger Stadium                 | Shoreline Amphitheatre
CA         |      45050 | Angel Stadium of Anaheim       | Shoreline Amphitheatre
CA         |      42445 | PETCO Park                     | Shoreline Amphitheatre
CA         |      41503 | AT&T Park                      | Shoreline Amphitheatre
CA         |      22000 | Shoreline Amphitheatre         | Shoreline Amphitheatre
CO         |      76125 | INVESCO Field                  | Coors Field
CO         |      50445 | Coors Field                    | Coors Field
DC         |      41888 | Nationals Park                 | Nationals Park
FL         |      74916 | Dolphin Stadium                | Tropicana Field
FL         |      73800 | Jacksonville Municipal Stadium | Tropicana Field
FL         |      65647 | Raymond James Stadium          | Tropicana Field
FL         |      36048 | Tropicana Field                | Tropicana Field
...
```

# Fungsi jendela LAST\$1VALUE
<a name="WF_last_value"></a>

 Diberikan kumpulan baris yang diurutkan, fungsi LAST\$1VALUE mengembalikan nilai ekspresi sehubungan dengan baris terakhir dalam bingkai. 

Untuk informasi tentang memilih baris pertama dalam bingkai, lihat[Fungsi jendela FIRST\$1VALUE](WF_first_value.md).

## Sintaksis
<a name="WF_last_value-synopsis"></a>

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

## Argumen
<a name="WF_last_value-arguments"></a>

 *ekspresi*   
 Kolom target atau ekspresi tempat fungsi beroperasi. 

ABAIKAN NULLS   
Fungsi mengembalikan nilai terakhir dalam frame yang tidak NULL (atau NULL jika semua nilai NULL). 

RESPECT NULLS   
Menunjukkan bahwa AWS Clean Rooms harus menyertakan nilai nol dalam penentuan baris mana yang akan digunakan. RESPECT NULLS didukung secara default jika Anda tidak menentukan IGNORE NULLS. 

DI ATAS   
Memperkenalkan klausa jendela untuk fungsi tersebut. 

PARTISI OLEH *expr\$1list*   
Mendefinisikan jendela untuk fungsi dalam hal satu atau lebih ekspresi. 

PESANAN BERDASARKAN *order\$1list*   
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\$1clause*.   
Hasilnya tergantung pada urutan data. Hasilnya nondeterministik dalam kasus-kasus berikut:   
+ Ketika tidak ada klausa ORDER BY 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\$1clause*   
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](Window_functions.md#Window_function_synopsis). 

## Jenis pengembalian
<a name="Supported_data_types_wf_last_value"></a>

Fungsi-fungsi ini mendukung ekspresi yang menggunakan tipe AWS Clean Rooms data primitif. Tipe pengembalian sama dengan tipe data *ekspresi*.

## Contoh
<a name="WF_last_value-examples"></a>

Contoh berikut mengembalikan kapasitas tempat duduk untuk setiap tempat di meja VENUE, dengan hasil yang diurutkan berdasarkan kapasitas (tinggi ke rendah). Fungsi LAST\$1VALUE digunakan untuk memilih nama tempat yang sesuai dengan baris terakhir dalam bingkai: dalam hal ini, baris dengan jumlah kursi paling sedikit. Hasilnya dipartisi berdasarkan status, jadi ketika nilai VENUESTATE berubah, nilai terakhir yang baru dipilih. Bingkai jendela tidak terbatas sehingga nilai terakhir yang sama dipilih untuk setiap baris di setiap partisi. 

Untuk California, `Shoreline Amphitheatre` dikembalikan untuk setiap baris di partisi karena memiliki jumlah kursi terendah (`22000`). 

```
select venuestate, venueseats, venuename,
last_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            |          last_value
-----------+------------+--------------------------------+------------------------------
CA         |      70561 | Qualcomm Stadium               | Shoreline Amphitheatre
CA         |      69843 | Monster Park                   | Shoreline Amphitheatre
CA         |      63026 | McAfee Coliseum                | Shoreline Amphitheatre
CA         |      56000 | Dodger Stadium                 | Shoreline Amphitheatre
CA         |      45050 | Angel Stadium of Anaheim       | Shoreline Amphitheatre
CA         |      42445 | PETCO Park                     | Shoreline Amphitheatre
CA         |      41503 | AT&T Park                      | Shoreline Amphitheatre
CA         |      22000 | Shoreline Amphitheatre         | Shoreline Amphitheatre
CO         |      76125 | INVESCO Field                  | Coors Field
CO         |      50445 | Coors Field                    | Coors Field
DC         |      41888 | Nationals Park                 | Nationals Park
FL         |      74916 | Dolphin Stadium                | Tropicana Field
FL         |      73800 | Jacksonville Municipal Stadium | Tropicana Field
FL         |      65647 | Raymond James Stadium          | Tropicana Field
FL         |      36048 | Tropicana Field                | Tropicana Field
...
```

# Fungsi jendela LEAD
<a name="WF_LEAD"></a>

 Fungsi jendela LEAD mengembalikan nilai untuk baris pada offset tertentu di bawah (setelah) baris saat ini di partisi. 

## Sintaksis
<a name="WF_LEAD-synopsis"></a>

```
LEAD (value_expr [, offset ])
[ IGNORE NULLS | RESPECT NULLS ]
OVER ( [ PARTITION BY window_partition ] ORDER BY window_ordering )
```

## Argumen
<a name="WF_LEAD-arguments"></a>

 *value\$1expr*   
Kolom target atau ekspresi tempat fungsi beroperasi. 

 *mengimbangi*   
 Parameter opsional yang menentukan jumlah baris di bawah 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, AWS Clean Rooms gunakan `1` sebagai nilai default. Offset `0` menunjukkan baris saat ini. 

ABAIKAN NULLS   
Spesifikasi opsional yang menunjukkan bahwa AWS Clean Rooms harus melewati nilai nol dalam penentuan baris mana yang akan digunakan. Nilai nol disertakan jika IGNORE NULLS tidak terdaftar.   
Anda dapat menggunakan ekspresi NVL atau COALESCE untuk mengganti nilai null dengan nilai lain. 

RESPECT NULLS   
 Menunjukkan bahwa AWS Clean Rooms harus menyertakan nilai nol dalam penentuan baris mana yang akan digunakan. RESPECT NULLS didukung secara default jika Anda tidak menentukan IGNORE NULLS. 

DI ATAS   
Menentukan jendela partisi dan pemesanan. Klausa OVER tidak dapat berisi spesifikasi bingkai jendela. 

PARTISI OLEH *window\$1partition*   
Argumen opsional yang menetapkan rentang catatan untuk setiap grup dalam klausa OVER. 

PESANAN DENGAN *window\$1ordering*   
Mengurutkan baris dalam setiap partisi. 

Fungsi jendela LEAD mendukung ekspresi yang menggunakan salah satu tipe AWS Clean Rooms data. Jenis pengembalian sama dengan tipe *value\$1expr*. 

## Contoh
<a name="WF_LEAD-examples"></a>

 Contoh berikut memberikan komisi untuk acara-acara di tabel PENJUALAN di mana tiket dijual pada 1 Januari 2008 dan 2 Januari 2008 dan komisi yang dibayarkan untuk penjualan tiket untuk penjualan berikutnya. 

```
select eventid, commission, saletime,
lead(commission, 1) over (order by saletime) as next_comm
from sales where saletime between '2008-01-01 00:00:00' and '2008-01-02 12:59:59'
order by saletime;

eventid | commission |      saletime       | next_comm
---------+------------+---------------------+-----------
6213 |      52.05 | 2008-01-01 01:00:19 |    106.20
7003 |     106.20 | 2008-01-01 02:30:52 |    103.20
8762 |     103.20 | 2008-01-01 03:50:02 |     70.80
1150 |      70.80 | 2008-01-01 06:06:57 |     50.55
1749 |      50.55 | 2008-01-01 07:05:02 |    125.40
8649 |     125.40 | 2008-01-01 07:26:20 |     35.10
2903 |      35.10 | 2008-01-01 09:41:06 |    259.50
6605 |     259.50 | 2008-01-01 12:50:55 |    628.80
6870 |     628.80 | 2008-01-01 12:59:34 |     74.10
6977 |      74.10 | 2008-01-02 01:11:16 |     13.50
4650 |      13.50 | 2008-01-02 01:40:59 |     26.55
4515 |      26.55 | 2008-01-02 01:52:35 |     22.80
5465 |      22.80 | 2008-01-02 02:28:01 |     45.60
5465 |      45.60 | 2008-01-02 02:28:02 |     53.10
7003 |      53.10 | 2008-01-02 02:31:12 |     70.35
4124 |      70.35 | 2008-01-02 03:12:50 |     36.15
1673 |      36.15 | 2008-01-02 03:15:00 |   1300.80
...
(39 rows)
```

# Fungsi jendela PERCENT\$1RANK
<a name="WF_PERCENT_RANK"></a>

Menghitung peringkat persen dari baris yang diberikan. Peringkat persen ditentukan dengan menggunakan rumus ini:

`(x - 1) / (the number of rows in the window or partition - 1)`

dimana *x* adalah pangkat dari baris saat ini. Dataset berikut menggambarkan penggunaan rumus ini:

```
Row#	Value	Rank	Calculation	PERCENT_RANK
1	15	1	(1-1)/(7-1)	0.0000
2	20	2	(2-1)/(7-1)	0.1666
3	20	2	(2-1)/(7-1)	0.1666
4	20	2	(2-1)/(7-1)	0.1666
5	30	5	(5-1)/(7-1)	0.6666
6	30	5	(5-1)/(7-1)	0.6666
7	40	7	(7-1)/(7-1)	1.0000
```

Rentang nilai pengembalian adalah 0 hingga 1, inklusif. Baris pertama dalam set apa pun memiliki PERCENT\$1RANK 0.

## Sintaksis
<a name="WF_PERCENT_RANK-synopsis"></a>

```
PERCENT_RANK ()
OVER ( 
[ PARTITION BY partition_expression ] 
[ ORDER BY order_list ]
)
```

## Argumen
<a name="WF_PERCENT_RANK-arguments"></a>

( )   
Fungsi ini tidak mengambil argumen, tetapi tanda kurung kosong diperlukan. 

DI ATAS  
Sebuah klausa yang menentukan partisi jendela. Klausa OVER tidak dapat berisi spesifikasi bingkai jendela.

PARTISI OLEH *partition\$1expression*   
Tidak wajib. Ekspresi yang menetapkan rentang catatan untuk setiap grup dalam klausa OVER.

PESANAN BERDASARKAN *order\$1list*   
Tidak wajib. Ekspresi untuk menghitung peringkat persen. Ekspresi harus memiliki tipe data numerik atau secara implisit dapat dikonversi menjadi satu. Jika ORDER BY dihilangkan, nilai kembalinya adalah 0 untuk semua baris.  
Jika ORDER BY tidak menghasilkan urutan unik, urutan baris adalah nondeterministik. Untuk informasi selengkapnya, lihat [Urutan data yang unik untuk fungsi jendela](Window_functions.md#Examples_order_by_WF). 

## Jenis pengembalian
<a name="WF_PERCENT_RANK-return-type"></a>

FLOAT8

## Contoh
<a name="WF_PERCENT_RANK-examples"></a>

Contoh berikut menghitung peringkat persen dari jumlah penjualan untuk setiap penjual:

```
select sellerid, qty, percent_rank() 
over (partition by sellerid order by qty) 
from winsales;

sellerid	qty		percent_rank
----------------------------------------
1		10.00		0.0
1		10.64		0.5
1		30.37		1.0
3		10.04		0.0
3		15.15		0.33
3		20.75		0.67
3		30.55		1.0
2		20.09		0.0
2		20.12		1.0
4		10.12		0.0
4		40.23		1.0
```

Untuk deskripsi tabel WINSALES, lihat[Contoh tabel untuk contoh fungsi jendela](Window_functions.md#Window_function_example).

# Fungsi jendela RANK
<a name="WF_RANK"></a>

 Fungsi jendela RANK menentukan peringkat nilai dalam sekelompok nilai, berdasarkan ekspresi ORDER BY dalam klausa OVER. Jika klausa PARTITION BY opsional ada, peringkat diatur ulang untuk setiap kelompok baris. Baris dengan nilai yang sama untuk kriteria peringkat menerima peringkat yang sama. AWS Clean Roomsmenambahkan jumlah baris terikat ke peringkat terikat untuk menghitung peringkat berikutnya dan dengan demikian peringkat mungkin bukan angka berurutan. Misalnya, jika dua baris diberi peringkat 1, peringkat berikutnya adalah 3. 

 RANK berbeda dari [Fungsi jendela DENSE\$1RANK](WF_DENSE_RANK.md) dalam satu hal: Untuk DENSE\$1RANK, jika dua atau lebih baris mengikat, tidak ada celah dalam urutan nilai peringkat. Misalnya, jika dua baris diberi peringkat 1, peringkat berikutnya adalah 2.

Anda dapat memiliki fungsi peringkat dengan klausa PARTITION BY dan ORDER BY yang berbeda dalam kueri yang sama. 

## Sintaksis
<a name="WF_RANK-synopsis"></a>

```
RANK () OVER
(
[ PARTITION BY expr_list ]
[ ORDER BY order_list ]
)
```

## Argumen
<a name="WF_RANK-arguments"></a>

( )   
Fungsi ini tidak mengambil argumen, tetapi tanda kurung kosong diperlukan. 

DI ATAS   
Jendela klausa untuk fungsi RANK.

PARTISI OLEH *expr\$1list*   
Tidak wajib. Satu atau lebih ekspresi yang menentukan jendela. 

PESANAN BERDASARKAN *order\$1list*   
Tidak wajib. Mendefinisikan kolom yang menjadi dasar nilai peringkat. Jika tidak ada PARTITION BY yang ditentukan, ORDER BY menggunakan seluruh tabel. Jika ORDER BY dihilangkan, nilai kembalinya adalah 1 untuk semua baris.   
Jika ORDER BY tidak menghasilkan urutan unik, urutan baris adalah nondeterministik. Untuk informasi selengkapnya, lihat [Urutan data yang unik untuk fungsi jendela](Window_functions.md#Examples_order_by_WF). 

## Jenis pengembalian
<a name="Supported_data_types_wf_rank"></a>

INTEGER

## Contoh
<a name="WF_RANK-examples"></a>

Contoh berikut memesan tabel berdasarkan kuantitas yang dijual (naik default), dan menetapkan peringkat untuk setiap baris. Nilai peringkat 1 adalah nilai peringkat tertinggi. Hasilnya diurutkan setelah hasil fungsi jendela diterapkan: 

```
select salesid, qty,
rank() over (order by qty) as rnk
from winsales
order by 2,1;

salesid | qty | rnk
--------+-----+-----
10001 |  10 |  1
10006 |  10 |  1
30001 |  10 |  1
40005 |  10 |  1
30003 |  15 |  5
20001 |  20 |  6
20002 |  20 |  6
30004 |  20 |  6
10005 |  30 |  9
30007 |  30 |  9
40001 |  40 |  11
(11 rows)
```

Perhatikan bahwa klausa ORDER BY luar dalam contoh ini menyertakan kolom 2 dan 1 untuk memastikan bahwa AWS Clean Rooms mengembalikan hasil yang diurutkan secara konsisten setiap kali kueri ini dijalankan. Misalnya, baris dengan penjualan IDs 10001 dan 10006 memiliki nilai QTY dan RNK yang identik. Memesan hasil akhir yang ditetapkan oleh kolom 1 memastikan bahwa baris 10001 selalu jatuh sebelum 10006. Untuk deskripsi tabel WINSALES, lihat[Contoh tabel untuk contoh fungsi jendela](Window_functions.md#Window_function_example).

Dalam contoh berikut, urutan dibalik untuk fungsi window (`order by qty desc`). Sekarang nilai peringkat tertinggi berlaku untuk nilai QTY terbesar. 

```
select salesid, qty,
rank() over (order by qty desc) as rank
from winsales
order by 2,1;

 salesid | qty | rank
---------+-----+-----
   10001 |  10 |   8
   10006 |  10 |   8
   30001 |  10 |   8
   40005 |  10 |   8
   30003 |  15 |   7
   20001 |  20 |   4
   20002 |  20 |   4
   30004 |  20 |   4
   10005 |  30 |   2
   30007 |  30 |   2
   40001 |  40 |   1
(11 rows)
```

Untuk deskripsi tabel WINSALES, lihat[Contoh tabel untuk contoh fungsi jendela](Window_functions.md#Window_function_example). 

Contoh berikut mempartisi tabel oleh SELLERID dan mengurutkan setiap partisi dengan kuantitas (dalam urutan menurun) dan menetapkan peringkat untuk setiap baris. Hasilnya diurutkan setelah hasil fungsi jendela diterapkan. 

```
select salesid, sellerid, qty, rank() over
(partition by sellerid
order by qty desc) as rank
from winsales
order by 2,3,1;

salesid | sellerid | qty | rank
--------+----------+-----+-----
  10001 |        1 |  10 |  2
  10006 |        1 |  10 |  2
  10005 |        1 |  30 |  1
  20001 |        2 |  20 |  1
  20002 |        2 |  20 |  1
  30001 |        3 |  10 |  4
  30003 |        3 |  15 |  3
  30004 |        3 |  20 |  2
  30007 |        3 |  30 |  1
  40005 |        4 |  10 |  2
  40001 |        4 |  40 |  1
(11 rows)
```

# Fungsi jendela ROW\$1NUMBER
<a name="WF_ROW_NUMBER"></a>

Menentukan nomor urut dari baris saat ini dalam sekelompok baris, dihitung dari 1, berdasarkan ekspresi ORDER BY dalam klausa OVER. Jika klausa PARTITION BY opsional ada, nomor urut diatur ulang untuk setiap kelompok baris. Baris dengan nilai yang sama untuk ekspresi ORDER BY menerima nomor baris yang berbeda secara nondeterministik. 

## Sintaksis
<a name="WF_ROW_NUMBER-synopsis"></a>

```
ROW_NUMBER () OVER
(
[ PARTITION BY expr_list ]
[ ORDER BY order_list ]
)
```

## Argumen
<a name="WF_ROW_NUMBER-arguments"></a>

( )   
Fungsi ini tidak mengambil argumen, tetapi tanda kurung kosong diperlukan. 

DI ATAS   
Klausa jendela untuk fungsi ROW\$1NUMBER. 

PARTISI OLEH *expr\$1list*   
Tidak wajib. Satu atau lebih ekspresi yang mendefinisikan fungsi ROW\$1NUMBER. 

PESANAN BERDASARKAN *order\$1list*   
Tidak wajib. Ekspresi yang mendefinisikan kolom yang menjadi dasar nomor baris. Jika tidak ada PARTITION BY yang ditentukan, ORDER BY menggunakan seluruh tabel.   
Jika ORDER BY tidak menghasilkan urutan unik atau dihilangkan, urutan baris adalah nondeterministik. Untuk informasi selengkapnya, lihat [Urutan data yang unik untuk fungsi jendela](Window_functions.md#Examples_order_by_WF). 

## Jenis pengembalian
<a name="Supported_data_types_WF_ROW_NUMBER"></a>

BIGINT

## Contoh
<a name="WF_ROW_NUMBER-examples"></a>

Contoh berikut mempartisi tabel oleh SELLERID dan memerintahkan setiap partisi dengan QTY (dalam urutan menaik), kemudian menetapkan nomor baris untuk setiap baris. Hasilnya diurutkan setelah hasil fungsi jendela diterapkan. 

```
select salesid, sellerid, qty, 
row_number() over 
(partition by sellerid
 order by qty asc) as row
from winsales
order by 2,4;

 salesid | sellerid | qty | row
---------+----------+-----+-----
   10006 |        1 |  10 |   1
   10001 |        1 |  10 |   2
   10005 |        1 |  30 |   3
   20001 |        2 |  20 |   1
   20002 |        2 |  20 |   2
   30001 |        3 |  10 |   1
   30003 |        3 |  15 |   2
   30004 |        3 |  20 |   3
   30007 |        3 |  30 |   4
   40005 |        4 |  10 |   1
   40001 |        4 |  40 |   2
(11 rows)
```

 Untuk deskripsi tabel WINSALES, lihat[Contoh tabel untuk contoh fungsi jendela](Window_functions.md#Window_function_example). 