Cláusula PARTICIÓN POR SQL

Clausula Particion Por Sql



En SQL, la cláusula PARTITION BY nos permite dividir o particionar el conjunto de resultados de una consulta determinada en varios grupos en función de una o más columnas. Las particiones resultantes pueden ser muy útiles, especialmente cuando necesita realizar cálculos en cada partición (individualmente) o aplicar las funciones agregadas dentro de cada grupo.

En este tutorial, aprenderemos sobre el funcionamiento de la cláusula PARTITION BY en SQL y descubriremos cómo podemos usarla para particionar los datos para un subconjunto más granular.

Sintaxis:

Comencemos con la sintaxis de la cláusula PARTICIÓN POR. La sintaxis puede depender del contexto en el que la uses, pero aquí tienes la sintaxis general:







SELECCIONE columna1, columna2, ...

SOBRE (PARTICIÓN POR partición_columna1, partición_columna2, ...)

DESDE nombre_tabla

La sintaxis dada representa los siguientes elementos:



  1. columna1, columna2: esto se refiere a las columnas que deseamos incluir en el conjunto de resultados.
  2. PARTICIÓN POR columnas: esta cláusula define cómo deseamos dividir o agrupar los datos.

Data de muestra

Creemos una tabla básica con datos de muestra para demostrar cómo usar la cláusula PARTITION BY. Para este ejemplo, creemos una tabla básica que almacene la información del producto.



CREAR TABLA productos (
product_id INT PRIMARY KEY AUTO_INCREMENT,
nombre_producto VARCHAR( 255 ),
categoría VARCHAR( 255 ),
precio DECIMAL( 10 , 2 ),
cantidad INT,
fecha_de_caducidad FECHA,
código de barras BIGINT
);

insertar
en
productos (nombre_producto,
categoría,
precio,
cantidad,
fecha de caducidad,
código de barras)
valores ( 'Gorro de cocinero 25cm' ,
'panadería' ,
24.67 ,
57 ,
'2023-09-09' ,
2854509564204 );

insertar
en
productos (nombre_producto,
categoría,
precio,
cantidad,
fecha de caducidad,
código de barras)
valores ( 'Huevos de Codorniz - Enlatados' ,
'despensa' ,
17.99 ,
67 ,
'2023-09-29' ,
1708039594250 );

insertar
en
productos (nombre_producto,
categoría,
precio,
cantidad,
fecha de caducidad,
código de barras)
valores ( 'Café - Capuccino con ponche de huevo' ,
'panadería' ,
92.53 ,
10 ,
'2023-09-22' ,
8704051853058 );

insertar
en
productos (nombre_producto,
categoría,
precio,
cantidad,
fecha de caducidad,
código de barras)
valores ( 'Pera - Espinosa' ,
'panadería' ,
65.29 ,
48 ,
'2023-08-23' ,
5174927442238 );

insertar
en
productos (nombre_producto,
categoría,
precio,
cantidad,
fecha de caducidad,
código de barras)
valores ( 'Pasta - Cabello de Ángel' ,
'despensa' ,
48.38 ,
59 ,
'2023-08-05' ,
8008123704782 );

insertar
en
productos (nombre_producto,
categoría,
precio,
cantidad,
fecha de caducidad,
código de barras)
valores ( 'Vino - Prosecco Valdobiaddene' ,
'producir' ,
44.18 ,
3 ,
'2023-03-13' ,
6470981735653 );

insertar
en
productos (nombre_producto,
categoría,
precio,
cantidad,
fecha de caducidad,
código de barras)
valores ( 'Repostería - Mini Francesa Surtida' ,
'despensa' ,
36.73 ,
52 ,
'2023-05-29' ,
5963886298051 );

insertar
en
productos (nombre_producto,
categoría,
precio,
cantidad,
fecha de caducidad,
código de barras)
valores ( 'Naranja - Enlatada, Mandarina' ,
'producir' ,
65.0 ,
1 ,
'2023-04-20' ,
6131761721332 );

insertar
en
productos (nombre_producto,
categoría,
precio,
cantidad,
fecha de caducidad,
código de barras)
valores ( 'Hombro de puerco' ,
'producir' ,
55.55 ,
73 ,
'2023-05-01' ,
9343592107125 );

insertar
en
productos (nombre_producto,
categoría,
precio,
cantidad,
fecha de caducidad,
código de barras)
valores ( 'Dc Hikiage Hira Huba' ,
'producir' ,
56.29 ,
53 ,
'2023-04-14' ,
3354910667072 );

Una vez que tengamos la configuración de los datos de muestra, podemos continuar y utilizar la cláusula PARTITION BY.





Uso básico

Supongamos que queremos calcular el total de artículos para cada categoría de producto en la tabla anterior. Podemos usar PARTICIÓN POR para dividir los artículos en categorías únicas y luego determinar el total de la cantidad en cada categoría.

Un ejemplo es el siguiente:



SELECCIONAR
nombre del producto,
categoría,
cantidad,
SUMA (cantidad) SOBRE (PARTICIÓN POR categoría) COMO total_items
DE
productos;

Observe que en el ejemplo dado, particionamos los datos usando la columna 'categoría'. Luego usamos la función agregada SUM() para determinar el total de elementos en cada categoría por separado. El resultado muestra el total de artículos en cada categoría.

Uso de la cláusula PARTICIÓN POR

En resumen, el caso de uso más común de la cláusula PARTITION BY es junto con las funciones de ventana. La función de ventana se aplica a cada partición por separado.

Algunas de las funciones de ventana comunes que se usan con PARTITION BY incluyen las siguientes:

  • SUMA(): calcula la suma de una columna dentro de cada partición.
  • AVG(): calcula el promedio de una columna dentro de cada partición.
  • COUNT(): cuenta el número de filas dentro de cada partición.
  • ROW_NUMBER(): asigna un número de fila único a cada fila dentro de cada partición.
  • RANK(): asigna una clasificación a cada fila dentro de cada partición.
  • DENSE_RANK(): asigna un rango denso a cada fila dentro de cada partición.
  • NTILE(): divide los datos en cuantiles dentro de cada partición.

¡Eso es todo!

Conclusión

En este tutorial, aprendimos cómo trabajar con la cláusula PARTITION BY en SQL para particionar los datos en varios segmentos y luego aplicar una operación específica a cada una de las particiones resultantes por separado.