Menu
Coddy logo textTech

PARTITION BY criterion

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 para cada grupo separadamente 

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 gerará uma coluna que numerará cada tipo dentro de si mesmo:

idtyperow_num
132t11
52t21
92t12
154t31
198t13

id 92 possui row_num 2 porque é a segunda linha de type t1 quando ordenado por id.

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

Podemos até especificar múltiplas colunas dentro do PARTITION BY:

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

Desafio

Fácil

Tabelas e colunas disponíveis:

  • <strong>doors</strong>: <strong>id</strong>, <strong>publication_year</strong>
  • <strong>doors_specs</strong>: <strong>id</strong>, <strong>country</strong>, <strong>color</strong>

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. Nomeie esta coluna row_num.

As portas devem ser numeradas dentro de cada grupo em ordem ascendente pelo seu id. Portas sem especificações devem ser ignoradas. Ordene o resultado final em ordem ascendente pelo id

Folha de consulta

Use PARTITION BY na cláusula OVER() para numerar linhas dentro de grupos:

SELECT id, type, ROW_NUMBER() OVER (PARTITION BY type) as row_num
FROM table1

Você pode particionar por múltiplas colunas:

ROW_NUMBER() OVER (PARTITION BY type, hue)

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