Menu
Coddy logo textTech

PARTITION BY criterion

Parte de la sección Fundamentos del Journey de SQL de Coddy — lección 59 de 72.

Otra opción para la cláusula OVER () es PARTITION BY

Nos permite numerar las filas para cada grupo por separado 

Por ejemplo:

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

Esto generará una columna que numerará cada tipo dentro de sí misma:

idtyperow_num
132t11
52t21
92t12
154t31
198t13

id 92 tiene row_num 2 porque es la segunda fila de type t1 cuando se ordena por id.

Nota: ROW_NUMBER() requiere una ORDER BY cláusula dentro de la OVER() para determinar cómo se deben numerar las filas dentro de cada partición.

Incluso podemos especificar múltiples columnas dentro de PARTITION BY:

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

Desafío

Fácil

Tablas y columnas disponibles:

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

Una fábrica está fabricando puertas. Necesita numerar las puertas para cada combinación de country y color que tengan un publication_year menor que 2000. Nombra esta columna row_num.

Las puertas deben numerarse dentro de cada grupo en orden ascendente por su id. Las puertas sin especificaciones deben ignorarse. Ordena el resultado final en orden ascendente por el id

Hoja de referencia

Utilice PARTITION BY en la cláusula OVER() para numerar filas dentro de grupos:

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

Puede particionar por múltiples columnas:

ROW_NUMBER() OVER (PARTITION BY type, hue)

Pruébalo tú mismo

quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos