Desenvolvendo Queries com Ranking no MySQL

Visualizações: 2.020
Tempo de Leitura: 2 minutos

Olá leitores,
Bom dia!

Recentemente tive uma necessidade de criar um ranking no MySQL semelhante ao ROW_NUMBER() do SQL Server. Infelizmente, a Oracle ainda não implementou esse recurso tão útil, mas como se tudo dá um jeito, vou mostrar a vocês como podemos implementar isso.

Uma forma bem simples de fazer isso, é criar uma tabela e incluir um campo de auto incremento, como o exemplo abaixo:

Dessa forma, cada linha terá o seu próprio ID incremental, que pode ser usado como Ranking.

O problema é quando precisamos criar queries um pouco mais complexas utilizando com joins e filtros e precisamos criar um ranking nessa query. Podemos criar uma tabela e guardar o resultado dessa query na tabela usando um auto incremento?
Sim, mas é um opção bem trabalhosa, principalmente se muitas colunas forem retornadas na query.

Populando dados de forma que a nossa tabela fique conforme a estrutura abaixo:

Podemos atender a nossa necessidade criando a query da seguinte forma:

E esse é o retorno:

Exatamente o que eu precisava!

Até a próxima!