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 (window functions) realizam cálculos em um conjunto de linhas da 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:

  • 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 window:

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

ROW_NUMBER() é uma das funções de window mais simples. Ela atribui um número sequencial único para each row no conjunto de result. Veja 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 a numeração 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 de row_num

Experimente você mesmo

-- Numere cada linha do resultado filtrado usando uma função de janela
SELECT id, density, ____ as row_num
FROM liquids
WHERE density > ____
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

Pratique por conta própria: Playground de SQL