MySQL MariaDB

Função de janela de número de linha do MySQL

Função de janela de número de linha do MySQL
No MySQL, um método ROW NUMBER () contém um número cronológico para cada linha dentro da partição. É apenas um recurso de janela de algum tipo. A figura das linhas começa em 1 com a figura das linhas dentro da partição. Lembre-se, antes da versão 8.0, o MySQL não permite a função ROW NUMBER () no entanto, oferece uma variável de sessão que ajuda a imitar este recurso. Entenderemos mais sobre a funcionalidade ROW NUMBER () do MySQL ao longo deste guia e produziremos um número consecutivo para cada linha na coleção de resultados. No MySQL, os métodos ROW_NUMBER () são usados ​​com as cláusulas seguintes:

Sintaxe:

>> SELECT nome_coluna, ROW_NUMBER () OVER (PARTIÇÃO POR nome_coluna, ORDER BY nome_coluna) AS núm_linha FROM nome_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 “animais” no esquema “dados” com alguns registros. Vamos buscar seus registros usando a instrução SELECT.

>> SELECIONE * DOS dados.animais;

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 pegando um exemplo da função ROW_NUMBER () seguida por Over (), enquanto usamos apenas a cláusula ORDER BY. Temos buscado todos os registros enquanto numeramos as linhas de acordo com a ordem da coluna “Preço”. Demos o nome “row_num” a uma coluna, que irá armazenar os números da linha. Vamos tentar o comando abaixo para fazer isso.

>> SELECT *, ROW_NUMBER () OVER (ORDER BY Price) AS row_num FROM data.animais;

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 só vê 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”.

>> SELECT *, ROW_NUMBER () OVER (ORDER BY Age) AS row_num FROM data.animais;

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 “Cor”. Execute o comando anexado abaixo no shell de comando.

>> SELECT *, ROW_NUMBER () OVER (PARTITION BY Cor) AS row_num FROM data.animais;

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 “Preta” 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, só temos dois gêneros nesta tabela, é por isso que 2 partições serão formadas. As fêmeas ocupam 9 linhas, por isso tem numeração de linhas de 1 a 9. Enquanto os homens têm 8 valores, é por isso que tem 1 a 8.

>> SELECT *, ROW_NUMBER () OVER (PARTITION BY Gender) AS row_num FROM data.animais;

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. Então, abra o MySQL Workbench 8.0 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 implementação da função ROW_NUMBER ().

>> SELECIONE * DOS dados.pedido1;

A tabela “pedido1” 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 enquanto usamos 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” seguida da 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.

Como mostrar a sobreposição de OSD em aplicativos e jogos Linux em tela cheia
Jogar jogos em tela cheia ou usar aplicativos em modo de tela cheia sem distração pode cortar você das informações relevantes do sistema visíveis em u...
Top 5 cartas de captura de jogos
Todos nós vimos e amamos streaming de jogos no YouTube. PewDiePie, Jakesepticye e Markiplier são apenas alguns dos melhores jogadores que ganharam mil...
Como desenvolver um jogo no Linux
Uma década atrás, poucos usuários de Linux preveriam que seu sistema operacional favorito um dia seria uma plataforma de jogos popular para videogames...