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
Técnicas Avanzadas en SQL

bookFunciones de Ventana

Las 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:

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

Podemos 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;
copy

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 de origen desde la cual 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?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 3. Capítulo 3

Pregunte a AI

expand

Pregunte a AI

ChatGPT

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

Suggested prompts:

Can you explain how the PARTITION BY clause works in window functions?

What other aggregate functions can be used with window functions?

Can you show an example using ORDER BY within the window function?

Awesome!

Completion rate improved to 4.35

bookFunciones de Ventana

Desliza para mostrar el menú

Las 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:

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

Podemos 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;
copy

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 de origen desde la cual 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?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

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