- A cláusula Over () será usada dentro dele.
- A cláusula ORDERS BY organiza o resultado de acordo com a ordem de classificação da coluna mencionada.
Sintaxe:
>> SELECIONE col_name,ROW_NUMBER()SOBRE( PARTIÇÃO POR col_name, ORDENAR POR col_name) COMO row_num A PARTIR DE Nome da tabela;Vamos abrir o shell do cliente de linha de comando do MySQL a partir dos aplicativos e digitar a senha para fazer login.
Você deve criar uma nova tabela ou usar a tabela padrão para começar a trabalhar na função de número de linha. Conforme apresentado na imagem abaixo, temos uma tabela de animais nos dados do esquema com alguns registros. Vamos buscar seus registros usando a instrução SELECT.
>> SELECIONE * A PARTIR DE dados .animals;
Exemplo 01: ROW_NUMBER () Usando cláusula ORDER BY
Estaremos usando a mesma tabela para elaborar alguns exemplos da função de número de linha. Estamos tomando um exemplo da função ROW_NUMBER () seguida por Over (), enquanto usamos apenas a cláusula ORDER BY. Buscamos todos os registros enquanto numeramos as linhas de acordo com a ordem de preço da coluna. Demos o nome row_num a uma coluna, que armazenará os números da linha. Vamos tentar o comando abaixo para fazer isso.
>> SELECIONE *,ROW_NUMBER()SOBRE( ORDENAR POR Preço) COMO row_num A PARTIR DE dados .animals;Ao executar a consulta acima, podemos ver que as linhas foram atribuídas com números de acordo com a ordem de classificação da coluna Preço. Você pode pensar que alguns preços menores deveriam estar no topo da coluna e deveriam ser classificados de acordo com isso. Mas a cláusula ORDER BY vê apenas o primeiro dígito ou alfabeto da coluna para classificar os valores.
Vamos executar a mesma consulta seguida pela cláusula ORDER BY enquanto usamos a ordem de classificação da coluna Age. A saída será dada de acordo com a coluna Idade.
>> SELECIONE *,ROW_NUMBER()SOBRE( ORDENAR POR Era) COMO row_num A PARTIR DE dados .animals;
Exemplo 02: ROW_NUMBER () Usando a cláusula PARTITION BY
Estaremos usando a única cláusula PARTITION BY na consulta ROW_NUMBER () para verificar os resultados. Temos usado a consulta SELECT para buscar os registros seguidos por ROW_NUMBER () e cláusula OVER, enquanto particionamos a tabela de acordo com a coluna Color. Execute o comando anexado abaixo no shell de comando.
>> SELECIONE *,ROW_NUMBER()SOBRE( PARTIÇÃO POR Cor) COMO row_num A PARTIR DE dados .animals;Você pode ver no resultado que a numeração das linhas foi atribuída nas partições, de acordo com a ordem de classificação das cores. Como temos 4 valores para a cor Black que ocupa 4 linhas. É por isso que tem números de quatro linhas começando de 1 a 4 e vice-versa.
Tente o mesmo exemplo, particionado pela coluna Gênero desta vez. Como sabemos, temos apenas dois gêneros nesta tabela, é por isso que 2 partições serão formadas. As mulheres ocupam 9 linhas, é por isso que tem uma numeração de linha de 1 a 9. Enquanto os homens têm 8 valores, é por isso que tem de 1 a 8.
>> SELECIONE *,ROW_NUMBER()SOBRE( PARTIÇÃO POR Gênero) COMO row_num A PARTIR DE dados .animals;
Exemplo 03: ROW_NUMBER () Usando PARTITION BY & ORDER BY
Fizemos os dois exemplos acima na linha de comando do MySQL, agora é hora de fazer o exemplo ROW_NUMBER () no MySQL Workbench 8.0. Portanto, abra o MySQL Workbench 8.0 a partir dos aplicativos. Conecte o MySQL Workbench com o banco de dados raiz do host local para começar a trabalhar.
No lado esquerdo do MySQL Workbench, você encontrará a barra Schema, abra o navegador. Nesta barra de esquema, você encontrará a lista de bancos de dados. Na lista de bancos de dados, você terá diferentes tabelas e procedimentos armazenados, como você pode ver na imagem abaixo. Temos diferentes tabelas em nosso banco de dados 'dados'. Estaremos abrindo a tabela 'pedido1' usando o comando SELECT na área de consulta para começar a usá-la para a implementação da função ROW_NUMBER ().
>> SELECIONE * A PARTIR DE dados .order1;
A tabela order1 foi exibida na visualização em grade, conforme mostrado abaixo. Você pode ver que tem 4 campos de coluna, id, região, status e OrderNo. Estaremos buscando todos os registros desta tabela usando as cláusulas ORDER BY e PARTITION BY, ambas ao mesmo tempo.
Na área de consulta do MySQL Workbench 8.0, digite a consulta exibida abaixo. A consulta foi iniciada com a cláusula SELECT, buscando todos os registros seguidos pela função ROW_NUMBER () junto com a cláusula OVER. Após a cláusula OVER, especificamos a coluna Status precedida pela instrução PARTITION BY para dividir a tabela em partições de acordo com esta tabela. A cláusula ORDER BY é usada para organizar a tabela de forma decrescente de acordo com a coluna Região. Os números das linhas serão mantidos na coluna row_num. Toque no ícone do flash para executar este comando.
O resultado exibido abaixo será mostrado. Em primeiro lugar, a tabela foi segregada em duas partes de acordo com os valores da coluna Status. Depois disso, ele foi apresentado na ordem decrescente da coluna ‘Região’ e as partições foram atribuídas com os números das linhas.
Conclusão:
Finalmente, completamos todos os exemplos necessários no uso da função ROW_NUMBER () no MySQL Workbench e MySQL Command-line Client Shell.