Percentil SQL

Percentil Sql



¿Cuáles son las dos palabras comunes que están tan relacionadas que uno pensaría que son iguales? Para nosotros, los desarrolladores de bases de datos, sería la base de datos SQL y las estadísticas.

Uno de los cálculos estadísticos comunes que surgen incluso en la administración de bases de datos es el percentil.

Un percentil es una medida estadística que nos permite dividir un conjunto de datos en partes iguales de segmentos. La función de los percentiles es proporcionar una idea de la distribución de los datos, que es la forma en que entendemos cómo se distribuyen los valores.







En este tutorial aprenderemos cómo podemos calcular los percentiles en SQL para dividir los datos en varios segmentos.



Tabla de muestra

Comencemos configurando una tabla básica que contenga datos de muestra con fines de demostración. Esto nos ayuda a ilustrar cómo se comportan los distintos métodos de cálculo de los percentiles y el resultado resultante.



Creemos una tabla llamada 'productos' que contenga la información del supermercado. La cláusula 'crear tabla' es la siguiente:





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

);

Una vez que creamos la tabla, podemos continuar y agregar los datos de muestra a la tabla. Podemos utilizar las siguientes declaraciones 'insertar':

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 );

Al final deberías tener una tabla como la siguiente:



Percentil SQL

Como puedes adivinar, la forma de calcular el percentil puede diferir según el motor de base de datos. Sin embargo, el método más común es utilizar las funciones PERCENTILE_DISC() y PERCENTILE_CONT().

Estas funciones son parte de la especificación SQL estándar (2003). Por lo tanto, seguramente será compatible con PostgreSQL y Oracle.

PERCENTILE_CONT()

Comencemos con la función PERCENTILE_CONT(). Esta función nos permite calcular los valores percentiles como una fracción del conjunto de datos.

La función devuelve valores interpolados que pueden no ser precisos para el punto de datos específico de su conjunto de datos.

La sintaxis de la función es la siguiente:

PERCENTILE_CONT(percentil) DENTRO GRUPO ( ORDEN POR nombre_columna) SOBRE ();

La función acepta los siguientes parámetros:

  • Percentil: especifica el valor percentil deseado (0,0 a 1,0).
  • nombre_columna: indica la columna para la que deseamos calcular el percentil.
  • OVER (): establece la función de ventana para especificar todo el conjunto de datos.

Un ejemplo de cómo utilizar esta función es el siguiente:

SELECCIONAR

PERCENTILE_CONT( 0.5 ) DENTRO GRUPO ( ORDEN POR precio) OVER () COMO mediana

DE

productos;

Nota: La consulta proporcionada solo funciona en PostgreSQL ya que MySQL no admite el uso de DENTRO DEL GRUPO.

Esto calcula los 50 th percentil de los datos proporcionados.

DISCO_PERCENTIL()

Podemos usar la función PERCENTILE_DISC() para calcular el valor percentil como un valor discreto directamente desde el conjunto de datos.

La función devuelve un valor que corresponde a un punto de datos real.

La sintaxis de la función es la siguiente (PostgreSQL):

PERCENTILE_DISC(percentil) DENTRO GRUPO ( ORDEN POR nombre_columna) SOBRE ();

Un resultado de ejemplo es el siguiente:

SELECCIONAR

DISCO_PERCENTIL( 0.25 ) DENTRO GRUPO ( ORDEN POR precio) OVER () AS percentil_25

DE

productos;

Esto debería calcular los 25 th percentil de los datos.

Conclusión

Este tutorial cubrió cómo utilizar las diversas funciones para calcular los percentiles en bases de datos SQL.