Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Funciones de Ventana | Algunos Temas Adicionales
Optimización de SQL y Características de Consulta

Funciones de Ventana

Desliza para mostrar el menú

Funciones de ventana son una categoría de funciones SQL que realizan cálculos a través de un conjunto de filas relacionadas con la fila actual dentro de una ventana o partición definida.
Se utilizan para realizar cálculos y análisis sobre un subconjunto de filas sin reducir el conjunto de resultados, a diferencia de las funciones de agregación que normalmente reducen la cantidad de filas devueltas por una consulta.

Explicación

Supongamos que tenemos la siguiente tabla Sales:

12
SELECT * FROM sales

Si nuestro objetivo es calcular el ingreso total para cada producto específico y mostrarlo en una columna adicional dentro de la tabla principal en lugar de generar una nueva tabla agrupada, el resultado podría verse de la siguiente manera:

¿Pero cómo podemos hacerlo?
Usar GROUP BY no es adecuado para esta tarea porque esta cláusula reduce el número de filas agrupándolas según los criterios especificados, lo que da como resultado que solo se devuelvan los IDs y sus valores de suma correspondientes.

Por eso, las funciones de ventana son esenciales para abordar este problema.

Implementación

Se puede obtener el resultado requerido utilizando la siguiente consulta:

1234567
SELECT sales_id, product_id, sales_date, amount, SUM(amount) OVER (PARTITION BY product_id) AS Total_Revenue_Per_Product FROM Sales;
Descripción de la consulta
expand arrow
  • Nombre de la función: SUM
  • Descripción: Calcula la suma de una columna especificada dentro de una ventana definida.
  • Argumentos:
    • Amount: La columna que se va a sumar.
  • Función de ventana:
    • OVER: Especifica la ventana sobre la que se realiza la agregación.
    • PARTITION BY Product_ID: Divide el conjunto de resultados en particiones según los valores de la columna Product_ID. La suma se calcula por separado para cada partición.
  • Alias: Total_Revenue_Per_Product: Nombre asignado a la suma calculada para cada partición.
  • Uso: Esta función se utiliza para calcular el ingreso total por producto, sumando los montos para cada ID de producto.
  • Resultado: El conjunto de resultados incluye las columnas Sales_ID, Product_ID, Sales_Date, Amount y Total_Revenue_Per_Product de la tabla sales, donde Total_Revenue_Per_Product representa el ingreso total para cada ID de producto.
  • Ordenación: El conjunto de resultados se ordena por Sales_Date.

Una sintaxis general para crear una función de ventana se puede describir de la siguiente manera:

SELECT 
    aggregation_func() OVER (
        PARTITION BY partition_column
        ORDER BY order_column
    )
FROM 
    table_name;
  • SELECT: indica que una consulta está a punto de comenzar;
  • aggregation_func(): la función de agregación (por ejemplo, SUM, AVG, COUNT) que realiza un cálculo sobre un conjunto de filas definido por la ventana;
  • OVER: palabra clave que introduce la función de ventana;
  • PARTITION BY: divide el conjunto de resultados en particiones según los valores de las columnas especificadas. La función de ventana opera de forma independiente en cada partición;
    • partition_column: la columna utilizada para particionar el conjunto de resultados.
  • ORDER BY: especifica el orden de las filas dentro de cada partición;
    • order_column: la columna utilizada para ordenar las filas dentro de cada partición.
  • FROM: indica la tabla fuente de la que se recuperan los datos;
    • table_name: el nombre de la tabla de la que se seleccionan los datos.
question mark

¿Qué cláusula se utiliza para definir la partición de una función de ventana?

Selecciona la respuesta correcta

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 3. Capítulo 2

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Sección 3. Capítulo 2
some-alt