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.
Desafio
FácilTabelas 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
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
4More Keywords
The IN keywordThe BETWEEN keywordThe LIKE keywordThe AS keywordRecap - Cellphone Models2Conditions
Conditions BasicsThe AND keywordThe OR keywordThe NOT keywordMultiple Conditions CombinedParenthesisBooleans5Arithmetic Operations
Mathematical OperatorsMathematical ColumnsThe Modulo OperationThe ROUND() Function8Statistics
Built-In Aggregate Part 1Built-In Aggregate Part 2Grouping Part 1Grouping Part 2Subqueries Part 1Subqueries Part 2Recap - Total Gain ShopRecap - Scooter ShopRecap - Coffee Shop11Window Functions part 1
ROW_NUMBER functionORDER BY criterionPARTITION BY criterionPARTITION & ORDERLEAD & LAG FunctionsRecap - LEAD & LAGRecap - PicturesRecap - Boxes3Specific Return Format
Null valuesSort Results Part 1Sort Results Part 2Recap - Cyber Security FirmLimit number of recordsRecap - Vehicle Factory6Intro Challenges
Recap - Parliamentary ElectionRecap - Police Criminal ArrestRecap - Bar Beverage ContainerRecap - Engineer new columns