Usando a função mysql dense_rank

Usando a função mysql dense_rank
A função MySQL dense_rank () é uma função que exibe a classificação de uma linha em sua partição sem lacunas nos valores de classificação. Esta função é uma função de janela, o que significa que tem semelhanças com funções como Row_Number () e Rank ().

Este tutorial deve se aprofundar em como a função densa do MySQL funciona e como podemos usá -lo em várias operações de banco de dados. Se você deseja acompanhar este tutorial, considere baixar o banco de dados de amostra Sakila a partir do recurso fornecido abaixo:

https: // dev.mysql.com/doc/índice-outro.html

Uso básico

A função mysql dense_rank () exibe as fileiras de uma linha dentro de uma partição sem lacunas. As fileiras das linhas aumentam em um valor de 1 do valor de classificação exclusiva da linha anterior.

A sintaxe geral da função dense_rank () é como:

Selecione col1 dense_rank () sobre (partição por expr ordem por expr [asc | desc]) rank_col_name de tb_name

Vamos examinar a sintaxe de consulta acima mais de perto.

A função dense_rank () se vincula à cláusula de seleção, que exibirá as fileiras das linhas da tabela especificada.

O dense_rank () sobre as seções retornam o resultado da função dense_rank () e a saída mantida no nome da coluna especificado.

A cláusula de partição por. A função dense_rank () é aplicada a cada partição.

Finalmente, a Ordem por seção especifica a ordem das linhas definidas em cada partição.

Exemplo de uso de uso

Vamos usar um banco de dados de amostra para ilustrar como podemos usar a função dense_rank (). Para este exemplo, usaremos o banco de dados Sakila e, mais especificamente, a tabela de filmes no banco de dados Sakila.

Usando a função dense_rank (), podemos classificar os filmes por sua taxa de aluguel, conforme mostrado na consulta abaixo:

Use Sakila;
Selecione o título, release_year, classificação, comprimento, dense_rank () sobre (partição por release_year Order by rent_rate ASC) rank_value do filme;

Devido à enorme quantidade de dados no banco de dados Sakila, reorganizarei a saída para facilitar a leitura e a ilustração.

A saída está abaixo:



Se você observar atentamente a saída acima, notará que a saída resultante varia da classificação 1 a 3, o que corresponde aos valores da taxa de aluguel na tabela de filme. Os valores do rate_rate são:

  1. 0.99 - Rank 1
  2. 2.99 - Rank 2
  3. 4.99 - Rank 3

No exemplo acima, usamos a cláusula de partição por dividir os conjuntos resultantes em várias partições, neste caso, release_year.

Em seguida, usamos a ordem MySQL pela declaração para ordenar os filmes pela taxa de aluguel em ordem crescente. Finalmente, aplicamos a função dense_rank () em cada partição especificada na ordem por declaração.

Conclusão

Neste tutorial, explicamos como a função dense_rank () funciona em um banco de dados e usamos um exemplo do mundo real para ilustrar como usá-lo.

Você pode aprender mais sobre dense_rank () e outras funções de janela do recurso fornecido abaixo:

https: // dev.mysql.com/doc/refman/8.0/pt/Window Functions.html