- Categorias:
Sintaxe e uso da função de janela (classificação)
ROW_NUMBER¶
Retorna um número de linha único para cada linha dentro de uma partição de janela.
O número da linha começa em 1 e continua em sequência.
Sintaxe¶
ROW_NUMBER() OVER ( [ PARTITION BY <expr1> [, <expr2> ... ] ] ORDER BY <expr3> [ , <expr4> ... ] [ { ASC | DESC } ] ) Argumentos¶
Nenhum.
Notas de uso¶
expr1eexpr2especificam a(s) coluna(s) ou expressão(ões) a ser(em) dividida(s). Você pode dividir por 0, 1 ou mais expressões.Por exemplo, suponha que você esteja selecionando dados entre vários estados (ou províncias) e queira números de linha de 1 a N dentro de cada estado; nesse caso, você pode dividir pelo estado.
Se quiser apenas um único grupo, então omita a cláusula PARTITION BY.
expr3eexpr4especificam a(s) coluna(s) ou expressão(ões) usadas para determinar a ordem das linhas. Você pode ordenar por 1 ou mais expressões.Por exemplo, se quiser listar os agricultores ordenados pela produção de milho, então use a coluna
bushels_produced. Para obter mais detalhes, consulte Exemplos (neste tópico).
Exemplos¶
A consulta abaixo mostra como atribuir números de linha dentro das partições. Neste caso, as partições são bolsas de valores (por exemplo, “N” para “NASDAQ”).
SELECT symbol, exchange, shares, ROW_NUMBER() OVER (PARTITION BY exchange ORDER BY shares) AS row_number FROM trades; +------+--------+------+----------+ |SYMBOL|EXCHANGE|SHARES|ROW_NUMBER| +------+--------+------+----------+ |SPY |C | 250| 1| |AAPL |C | 250| 2| |AAPL |C | 300| 3| |SPY |N | 100| 1| |AAPL |N | 300| 2| |SPY |N | 500| 3| |QQQ |N | 800| 4| |QQQ |N | 2000| 5| |YHOO |N | 5000| 6| +------+--------+------+----------+