- Categorias:
Funções de janela (Relacionada à classificação, Quadro de janela)
PERCENT_RANK¶
Retorna a classificação relativa de um valor dentro de um grupo de valores, especificado como uma porcentagem que varia de 0,0 a 1,0.
Sintaxe¶
PERCENT_RANK() OVER ( [ PARTITION BY <expr1> ] ORDER BY <expr2> [ { ASC | DESC } ] [ <cumulativeRangeFrame> ] )
Onde:
cumulativeRangeFrame ::= { RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW | RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING }
Notas de uso¶
expr1
especifica a coluna (ou expressão) para divisão.Por exemplo, suponha que dentro de cada estado ou província, você queira classificar os agricultores em ordem pela quantidade de milho que eles produziram. Neste caso, você divide por estado.
Se você quiser apenas um único grupo (por exemplo, você quer classificar todos os agricultores nos EUA independentemente do estado em que eles vivem), então omita a cláusula
PARTITION BY
.expr2
especifica a coluna (ou expressão) pela qual você quer fazer a classificação.Por exemplo, se você estiver classificando os agricultores para ver quem produziu mais milho (dentro de seu estado), então você usaria a coluna
bushels_produced
. Para obter mais detalhes, consulte Exemplos (neste tópico).PERCENT_RANK é calculado como:
Se n for 1:
PERCENT_RANK = 0
Se n for maior que 1:
PERCENT_RANK = (r - 1) / (n - 1)
onde
r
é o RANK da linha en
é o número de linhas na partição da janela.Os valores variam de 0,0 a 1,0. Você pode multiplicar por 100 para obter uma porcentagem verdadeira.
PERCENT_RANK oferece suporte a quadros de janelas cumulativos com base no intervalo, mas não outros tipos de quadros de janela. Para obter mais informações sobre a sintaxe dos quadros de janelas cumulativos com base no intervalo, consulte Sintaxe e utilização do quadro de janela.
Exemplos¶
SELECT
exchange,
symbol,
PERCENT_RANK() OVER (PARTITION BY exchange ORDER BY price) AS percent_rank
FROM trades;
+--------+------+------------+
|exchange|symbol|PERCENT_RANK|
+--------+------+------------+
|C |SPY | 0.0|
|C |AAPL | 0.5|
|C |AAPL | 1.0|
|N |YHOO | 0.0|
|N |QQQ | 0.2|
|N |QQQ | 0.4|
|N |SPY | 0.6|
|N |SPY | 0.6|
|N |AAPL | 1.0|
|Q |YHOO | 0.0|
|Q |YHOO | 0.2|
|Q |MSFT | 0.4|
|Q |MSFT | 0.6|
|Q |QQQ | 0.8|
|Q |QQQ | 1.0|
|P |YHOO | 0.0|
|P |MSFT | 0.25|
|P |MSFT | 0.5|
|P |SPY | 0.75|
|P |AAPL | 1.0|
+--------+------+------------+