PERCENT_RANK 範圍函數 - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

PERCENT_RANK 範圍函數

計算給定資料列的百分比排行。使用此公式決定百分比排名:

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

其中 x 是目前列的排名。以下資料集示範此公式的使用:

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

傳回值範圍是 0 至 1 (含)。任何集的第一列的 PERCENT_RANK 為 0。

語法

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

引數

( )

此函數不接受引數,但需要空括號。

OVER

用於指定視窗分割的子句。OVER 子句不能包含視窗框規格。

PARTITION BY partition_expression

選用。此表達式針對 OVER 子句中的每一個群組,設定記錄範圍。

ORDER BY order_list

選用。要計算百分比排名的表達式。表達式必須為數值資料類型,或可隱含地轉換為數值資料類型。如果省略 ORDER BY,所有列的傳回值為 0。

如果 ORDER BY 未產生唯一排序,則列的順序不確定。如需詳細資訊,請參閱 範圍函數的資料唯一排序

傳回類型

FLOAT8

範例

以下範例計算每一個賣方的銷售數量百分比排名:

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

如需 WINSALES 資料表的描述,請參閱範圍函數範例的範例資料表