Menu
Coddy logo textTech

ROW_NUMBER function

Parte da seção Fundamentos do Journey de SQL da Coddy — lição 57 de 72.

As funções de janela executam cálculos em um conjunto de linhas de tabela relacionadas à linha atual. Ao contrário das funções de agregação regulares, as funções de janela não colapsam os resultados em uma única linha.

Eles são particularmente úteis quando você precisa de:

  • Calcular totais acumulados
  • Classificar itens dentro de grupos
  • Comparar linhas atuais com linhas anteriores/seguintes
  • Analisar tendências ao longo de períodos de tempo

Por exemplo, aqui estão alguns exemplos do mundo real para casos de uso de funções de janela:

  • Análise de Vendas
    • Calcule as vendas cumulativas até cada ano (1995, 1997, 1999)
    • Encontre os produtos mais vendidos para cada trimestre
  • Estatísticas Esportivas
    • Rastreie as contagens de medalhas olímpicas ao longo de diferentes anos
    • Identifique os atletas líderes em cada período de competição (2000, 2004, 2008)

ROW_NUMBER() é uma das funções de janela mais simples. Ela atribui um número sequencial único a cada linha no conjunto de resultados. Aqui está como usá-la:

SELECT column1, column2,
       ROW_NUMBER() OVER ([PARTITION BY column] [ORDER BY column]) as row_num
FROM table_name;

É obrigatório usar a cláusula OVER com ROW_NUMBER() : ROW_NUMBER() OVER ()

Por exemplo:

SELECT product_name, sale_date,
       ROW_NUMBER() OVER () as row_num
FROM sales;

Isso adiciona uma coluna row_num que conta de 1 até o número total de linhas.

Nota: A cláusula OVER pode conter instruções de ordenação e particionamento para controlar como o numeramento funciona.

challenge icon

Desafio

Fácil

Tabelas e colunas disponíveis:

  • <strong>liquids</strong>: <strong>id</strong>, <strong>density</strong>

Busque todos os líquidos com densidade maior que 5.677.

Numere o resultado (use a função ROW_NUMBER()) e chame esta coluna row_num

Folha de consulta

Funções de janela realizam cálculos em um conjunto de linhas de tabela relacionadas à linha atual sem colapsar os resultados em uma única linha.

ROW_NUMBER() atribui um número sequencial único a cada linha:

SELECT column1, column2,
       ROW_NUMBER() OVER ([PARTITION BY column] [ORDER BY column]) as row_num
FROM table_name;

A cláusula OVER é obrigatória com ROW_NUMBER():

SELECT product_name, sale_date,
       ROW_NUMBER() OVER () as row_num
FROM sales;

Experimente você mesmo

quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentos