Cómo Calcular el Percentil en SQL Utilizando la Función PERCENT_RANK de SQL Server (2023)

En el mundo de las bases de datos relacionales, el almacenamiento de datos en tablas SQL es común. En ocasiones, al extraer datos, necesitamos realizar manipulaciones, como calcular el percentil en SQL. Este artículo explora la función analítica PERCENT_RANK() de SQL Server, centrándose en su aplicación para calcular percentiles y proporciona ejemplos detallados de su uso.

Visión General de la Función PERCENT_RANK()

SQL Server ofrece diversas funciones analíticas, y PERCENT_RANK() es una de las más potentes para calcular el percentil en SQL. Entre las funciones relacionadas se encuentran CUME_DIST(), FIRST_VALUE(), LAST_VALUE(), LEAD(), LAG(), PERCENTILE_COUNT(), PERCENTILE_DISC(), y otras. Estas funciones permiten asignar rangos a cada fila en un conjunto de resultados mediante el uso de funciones de ventana.

Sintaxis de PERCENT_RANK()

La sintaxis básica de la función PERCENT_RANK() es la siguiente:

PERCENT_RANK() OVER ([PARTITION BY expresion_particion, ...] ORDER BY expresion_ordenamiento [ASC | DESC], ...)
  • PARTITION BY: Opcional. Divide el conjunto de datos en conjuntos más pequeños.
  • ORDER BY: Obligatorio. Ordena los datos en orden ascendente o descendente.

Ejemplos Prácticos

Ejemplo 1: Calcular el Percentil de las Notas de Estudiantes

WITH Estudiante AS (
    SELECT Notas FROM (VALUES(75), (59), (69), (88), (72), (86), (60), (67), (49), (81), (93)) Val(Notas)
), Percentiles AS (
    SELECT Notas, PERCENT_RANK() OVER (ORDER BY Notas) AS Percent_Rank FROM Estudiante
)
SELECT * FROM Percentiles;

En este ejemplo, obtenemos el percentil de las notas de los estudiantes, mostrando valores entre 0 y 1.

Ejemplo 2: Manejar Valores Nulos

WITH Estudiante AS (
    SELECT Notas FROM (VALUES(75), (59), (69), (88), (72), (86), (60), (67), (49), (81), (93), (NULL)) Val(Notas)
), Percentiles AS (
    SELECT Notas, PERCENT_RANK() OVER (ORDER BY Notas) AS Percent_Rank FROM Estudiante
)
SELECT * FROM Percentiles;

Los valores nulos siempre obtienen un percentil de 0.

Ejemplo 3: Tratar Valores Duplicados

WITH Estudiante AS (
    SELECT Notas FROM (VALUES(75), (59), (69), (88), (72), (86), (60), (67), (49), (81), (81), (93)) Val(Notas)
), Percentiles AS (
    SELECT Notas, PERCENT_RANK() OVER (ORDER BY Notas) AS Percent_Rank FROM Estudiante
)
SELECT * FROM Percentiles;

Para valores duplicados, la función puede devolver el mismo o diferente rango.

Ejemplo 4: Orden Descendente

WITH Estudiante AS (
    SELECT Notas FROM (VALUES(75), (59), (69), (88), (72), (86), (60), (67), (49), (81), (93)) Val(Notas)
), Percentiles AS (
    SELECT Notas, PERCENT_RANK() OVER (ORDER BY Notas DESC) AS Percent_Rank FROM Estudiante
)
SELECT * FROM Percentiles;

Ordenando en forma descendente, las notas más altas obtienen un rango de 0 y las más bajas de 1.

Ejemplo 5: Utilizar la Clausula PARTITION BY

SELECT Departamento, Nombre, Salario, PERCENT_RANK() OVER (PARTITION BY Departamento ORDER BY Salario) AS PctRank
FROM HistorialDepartamentoEmpleado AS hde
INNER JOIN HistorialPagoEmpleado AS hpe ON hpe.IDEmpleado = hde.IDEmpleado
WHERE Departamento IN ('Ingeniería', 'Finanzas')
ORDER BY Departamento, Salario DESC;

Dividir los datos por departamento y calcular el percentil para los salarios.

Conclusión

En este artículo, exploramos a fondo la función PERCENT_RANK() de SQL Server para calcular percentiles. Esta función es esencial para entender el rango relativo de una fila dentro de un grupo de datos. Recuerde, PERCENT_RANK():

  • Calcula el rango relativo de una fila dentro de un grupo.
  • Utiliza la cláusula ORDER BY para ordenar los datos.
  • Puede dividir datos utilizando PARTITION BY.
  • Asigna un valor de 0 a los valores nulos.

Aprender esta función analítica de SQL Server es crucial para cualquier profesional que trabaje con bases de datos. ¡Consolide su conocimiento y utilice PERCENT_RANK() para obtener información valiosa de sus conjuntos de datos!

References

Top Articles
Latest Posts
Article information

Author: Frankie Dare

Last Updated: 04/11/2023

Views: 6156

Rating: 4.2 / 5 (73 voted)

Reviews: 88% of readers found this page helpful

Author information

Name: Frankie Dare

Birthday: 2000-01-27

Address: Suite 313 45115 Caridad Freeway, Port Barabaraville, MS 66713

Phone: +3769542039359

Job: Sales Manager

Hobby: Baton twirling, Stand-up comedy, Leather crafting, Rugby, tabletop games, Jigsaw puzzles, Air sports

Introduction: My name is Frankie Dare, I am a funny, beautiful, proud, fair, pleasant, cheerful, enthusiastic person who loves writing and wants to share my knowledge and understanding with you.