Menu
CoddyTech

Critério PARTITION BY

Parte da seção Fundamentos do Journey de SQL da Coddy. Lição 59 de 72.

Outra opção para a cláusula OVER () é PARTITION BY

Isso nos permite numerar as linhas separadamente para cada grupo 

Por exemplo:

idtype
132t1
52t2
92t1
154t3
198t1
SELECT id, type, ROW_NUMBER() OVER (PARTITION BY type ORDER BY id) as row_num
FROM table1

Isso irá gerar uma coluna que numera as linhas de cada tipo separadamente, na ordem de id (o resultado abaixo é mostrado agrupado por tipo):

idtyperow_num
92t11
132t12
198t13
52t21
154t31

id 92 tem row_num 1 porque é o menor id em type t1.

Observação: ROW_NUMBER() requer uma cláusula ORDER BY dentro de OVER() para determinar como as linhas devem ser numeradas dentro de cada partição.

Podemos até especificar várias colunas dentro de PARTITION BY:

ROW_NUMBER() OVER (PARTITION BY type, hue ORDER BY id)
challenge icon

Desafio

Fácil

Tabelas e colunas disponíveis:

  • doors: id, publication_year
  • doors_specs: id, country, color

Uma fábrica está construindo portas. Ela precisa numerar as portas para cada combinação de country e color que tenha um publication_year menor que 2000. Dê a essa coluna o nome row_num.

As portas devem ser numeradas dentro de cada grupo em ordem crescente por id. As portas sem especificações devem ser ignoradas. Ordene o resultado final em ordem crescente por id. 

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

Pratique por conta própria: Playground de SQL