Função da janela de classificação MySQL

Função da janela de classificação MySQL
O método de classificação aloca uma classificação dentro da partição de um resultado de um conjunto para cada linha. A classificação de uma linha é determinada incrementando uma figura de fileiras da linha que a precede. O MySQL utiliza um recurso de classificação que ajuda uma classificação por linha em uma partição de esquema. No MySQL, os métodos de classificação são de fato uma semi-parte do método da janela. Você usará os métodos de classificação no MySQL com as cláusulas subsequentes:
  • Os métodos sempre funcionam com uma cláusula over ().
  • Em ordem cronológica, eles alocam cada linha uma classificação.
  • Dependendo da ordem, as funções alocam uma classificação a cada linha.
  • As linhas sempre parecem ter uma classificação alocada para eles, começando com uma para cada nova partição.

No total, existem três tipos de funções de classificação, como segue:

  • Classificação
  • Classificação densa
  • Classificação percentual

MySQL Rank ():

Este é um método que fornece uma classificação dentro de uma partição ou matriz de resultados com lacunas por linha. Cronologicamente, a classificação das linhas não é alocada o tempo todo (eu.e., aumentado por um da linha anterior). Mesmo quando você tem um empate entre vários dos valores, nesse ponto, o utilitário rank () aplica a mesma classificação. Além disso, sua classificação anterior mais um número de números repetidos pode ser o número de classificação subsequente.

Para entender a classificação, abra o shell do cliente da linha de comando e digite sua senha MySQL para começar a usá-la.

Suponha que tenhamos uma tabela abaixo chamada "Mesmo" em um banco de dados "dados", com alguns registros.

>> Selecione * FROM dados.mesmo;

Exemplo 01: Rank Simple ()

Abaixo, estamos usando a função de classificação no comando select. Esta consulta seleciona a coluna "ID" da tabela "Mesmo" enquanto a classifica de acordo com a coluna "ID". Como você pode ver, demos um nome à coluna de classificação, que é "my_rank". A classificação agora será armazenada nesta coluna, como mostrado abaixo.

>> Selecione ID, classificação () sobre (Ordem por id) my_rank de Fata.mesmo;

Exemplo 02: Rank () Usando a Partição

Suponha outra tabela "funcionário" em um banco de dados "dados" com os seguintes registros. Vamos ter outra instância que divida o resultado definido em segmentos.

>> Selecione * FROM dados.funcionário;

Para consumir o método de classificação (), a instrução subsequente atribui a classificação a cada linha e divide o resultado definido em partições utilizando "idade" e classificá -las, dependendo do "salário". Esta consulta está buscando todos os registros enquanto classificava em uma coluna "New_rank". Você pode ver a saída desta consulta abaixo. Ele classificou a tabela de acordo com "Salário" e a dividiu de acordo com "Age".

>> Selecione *, rank () sobre (partição por ordem de idade por salário) new_rank dos dados.funcionário;

Mysql dense_rank ():

Esta é uma funcionalidade onde, sem orifícios, determina uma classificação por cada linha dentro de uma divisão ou conjunto de resultados. A classificação das linhas é mais frequentemente alocada em ordem seqüencial. Às vezes, você tem um empate entre os valores e, portanto, é atribuído à classificação exata pela classificação densa, e sua classificação subsequente é o próximo número seguinte.

Exemplo 01: simples dense_rank ()

Suponha que tenhamos uma tabela "funcionário" e você deve classificar as colunas da tabela, "nome" e "salário" de acordo com a coluna "nome". Criamos uma nova coluna "Dens_rank" para armazenar a classificação dos registros. Ao executar a consulta abaixo, temos os seguintes resultados com classificação diferente para todos os valores.

>> Selecione o nome, salário, dense_rank () sobre (ordem pelo nome) dens_rank dos dados.funcionário;

Exemplo 02: dense_rank () usando a partição

Vamos ver outra instância que divide o resultado em segmentos. De acordo com a sintaxe abaixo, o conjunto resultante particionado pela partição pela frase é retornado pela declaração de From, e o método dense_rank () é então manchado para cada seção usando a coluna "Nome". Então, para cada segmento, a ordem por frase manchas para determinar o imperativo das linhas usando a coluna "Age".

>> Selecione nome, idade, salário, dense_rank () sobre (partição por nome de nome por idade) new_rank de dados.funcionário;

Ao executar a consulta acima, você pode ver que temos um resultado muito distinto em comparação com o método único dense_rank () no exemplo acima. Temos o mesmo valor repetido para cada valor de linha, como você pode ver abaixo. É o empate dos valores de classificação.

Mysql %_rank ():

É de fato um método de classificação percentual (classificação comparativa) que calcula as linhas dentro de uma coleta de partição ou resultado. Este método retorna uma lista de uma escala de valor de zero a 1.

Exemplo 01: Simple porcent_rank ()

Usando a tabela "funcionário", estamos analisando o exemplo do método simples de porcent_rank (). Temos uma consulta abaixo abaixo para isso. A coluna PER_RANK foi gerada pelo método percentual (). Estamos buscando os dados de acordo com a ordem de classificação da coluna “Age” e depois classificamos os valores desta tabela. O resultado da consulta para este exemplo nos deu uma classificação percentual para os valores, conforme apresentado na imagem abaixo.

>> Selecione *, porcent_rank () sobre (ordem por idade) per_rank dos dados.funcionário;

Exemplo 02: porcent_rank () usando a partição

Depois de fazer o exemplo simples de porcent_rank (), agora é a curva para a cláusula "partição por". Temos usado a mesma tabela "funcionário". Vamos ter outro vislumbre de outra instância que divide o resultado definido nas seções. Dada a partir da sintaxe abaixo, a parede definida resultante pela partição pela expressão é reembolsada pela declaração de Declaração, bem como pelo método percentual (Rank () é então utilizado para classificar cada ordem da linha pela coluna "nome". Na imagem exibida abaixo, você pode ver o conjunto de resultados contém apenas 0 e 1 valores.

>> Selecione *, porcent_rank () sobre (partição por ordem salarial pelo nome) per_rank de dados.funcionário;

Conclusão:

Por fim, fizemos todas as três funções de classificação para linhas usadas no MySQL, através do shell do cliente da linha de comando MySQL. Além disso, levamos em consideração a cláusula simples e de partição por.