Lectores como tú ayudan a apoyar a MUO. Cuando realiza una compra utilizando enlaces en nuestro sitio, podemos ganar una comisión de afiliado. Leer más.

La versatilidad de SQL como lenguaje de consulta DBMS ha aumentado a lo largo de los años. Su amplia utilidad y versatilidad lo convierten en el favorito de todos los tiempos para todos los analistas de datos.

Hay bastantes funciones de nivel avanzado además de las normales de SQL. Estas funciones se conocen comúnmente como funciones de ventana. Si está tratando con datos complejos y desea realizar cálculos avanzados, puede usarlos para aprovechar al máximo sus datos.

La importancia de las funciones de ventana

Varias funciones de ventana están disponibles en SQL, y cada una lo ayudará a realizar una serie de cálculos. Desde la creación de particiones hasta la clasificación de filas o la asignación de números de fila, estas funciones de ventana hacen un poco de todo.

Las funciones de ventana son beneficiosas cuando aplica funciones agregadas sobre un conjunto de datos específico o una colección de filas. Estas funciones van más allá de las funciones de agregación que proporciona GROUP BY. Sin embargo, la principal diferencia es que, a diferencia de la función de agrupación, sus datos no se combinan en una sola fila.

instagram viewer

No puede usar funciones de ventana dentro del DÓNDE, DE, y AGRUPAR POR declaraciones.

Sintaxis de una función de ventana

Cuando se refiere a cualquier función de ventana, debe seguir la estructura de sintaxis predeterminada para que funcione correctamente. Si estructura el comando incorrectamente, obtendrá un error y su código no se ejecutará.

Esta es la sintaxis predeterminada:

SELECCIONAR nombre de columna1,
{función_ventana}(nombrecolumna2)
SOBRE([PARTICIÓN POR nombrecolumna1] [ORDEN POR nombrecolumna3]) COMO nueva_columna
DESDE table_name;

Dónde:

  • nombrecolumna1 es el nombre de la primera columna que le gustaría seleccionar.
  • {función_ventana} es el nombre de una función agregada como sum, avg, count, row_number, rank o dense_rank.
  • nombrecolumna2 es el nombre de la columna en la que está aplicando la función de ventana.
  • nombrecolumna3 es el nombre de la tercera columna, que formará la base para la partición.
  • nueva_columna es una etiqueta para la nueva columna que puede aplicar usando el COMO palabra clave.
  • nombre de la tabla es el nombre de la tabla de origen.

Las funciones de la ventana son diferentes de algunas de las comandos SQL más básicos. A diferencia de las funciones agregadas en SQL, puede usar estas funciones de ventana para realizar funciones avanzadas.

Preparación del conjunto de datos

Puedes usar el CREAR MESA declaración a crear una nueva tabla en SQL. Aquí hay un conjunto de datos de muestra que esta guía usará para definir algunas funciones de ventana:

Fecha de orden

Categoría

Color

Precio de venta

Cantidad

08-11-2016

Los telefonos

Negro

907.152

6

12-06-2016

Carpetas

Verde

18.504

3

11-10-2015

Accesorios

Amarillo

114.9

5

11-10-2015

Mesas

Marrón

1706.184

9

09-06-2014

Los telefonos

Rojo

911.424

4

09-06-2014

Papel

Blanco

15.552

3

09-06-2014

Carpetas

Negro

407.976

3

09-06-2014

Accesorios

Amarillo

68.81

5

09-06-2014

Carpetas

Verde

2.544

3

09-06-2014

Almacenamiento

Naranja

665.88

6

09-06-2014

Almacenamiento

Naranja

55.5

2

15-04-2017

Los telefonos

Negro

213.48

3

05-12-2016

Carpetas

Verde

22.72

4

22-11-2015

Accesorios

Verde

60.34

7

22-11-2015

Sillas

Marron oscuro

71.372

2

13-05-2014

Muebles

Naranja

190.92

5

La función de suma explicada

Suponga que desea calcular las ventas totales para cada valor dentro de la columna de categoría. Así es como puedes hacerlo:

SELECCIONARcategoría, color,
suma (precio_de_venta)
OVER (ordenar por categoría) AS total_sales
DE sahil.muestra;

En el código anterior, la instrucción SQL extrae la categoría y el color del conjunto de datos original. La función sum suma la columna sale_price. Lo hace por categoría, ya que la cláusula OVER especifica el orden por columna de categoría. El resultado final es el siguiente:

Cómo utilizar la función de ventana Avg()

Al igual que la función de suma, puede calcular el promedio por fila de datos con el promedio función. En lugar de la suma, obtendrá una columna con las ventas promedio.

SELECCIONARcategoría, color,
promedio (precio_de_venta)
SOBRE (ordenar por categoría) AS avg_sales
DE sahil.muestra;

Aprenda a usar la función de ventana Count()

Similar a las funciones de suma y promedio, la función de ventana de conteo en SQL es bastante sencilla y funciona de la misma manera que las otras dos funciones. Cuando pasa la función de conteo, obtiene el conteo total de cada valor dentro de la nueva columna.

Así es como puedes calcular el conteo:

SELECCIONARcategoría, color,
cuenta (categoría)
OVER (ordenar por categoría) AS item_count
DE sahil.muestra;

La función de ventana Row_Number()

A diferencia de algunas de las otras funciones de ventana enumeradas anteriormente, row_number() funciona de manera ligeramente diferente. La función row_number() asigna un número de fila a cada fila, según la cláusula order by. El número de fila inicial es 1; el número_fila asigna un valor correspondiente a cada fila hasta el final.

Aquí está la estructura básica de una función row_number():

SELECCIONARcategoría, color,
numero de fila()
OVER (ordenar por categoría) AS item_number
DE sahil.muestra;

Pero, ¿qué sucede si desea asignar números de fila separados a cada elemento de categoría? La sintaxis anterior establece un número de serie móvil, independientemente de los elementos almacenados en la categoría. Por ejemplo, la categoría de electrodomésticos debe tener su numeración exclusiva, seguida de carpetas, etc.

Puedes usar el dividir función para realizar esta tarea simple pero práctica. La palabra clave de partición asigna números de fila designados en función de cada elemento de categoría.

SELECCIONARcategoría, color,
numero de fila()
OVER (partición por categoría ordenada por categoría) AS item_number
DE sahil.muestra;

Las funciones Rank() y Dense_Rank()

El rango() La función funciona de manera diferente a la numero de fila() función. Debe especificar el nombre de la columna dentro de la orden por función, para usarlo como base para definir los valores de rango. Por ejemplo, en el siguiente ejemplo de código, puede usar la columna de color dentro de la orden por función. La consulta luego usará ese orden para asignar un valor de rango a cada fila.

Puede usar la sintaxis del código a continuación para pasar una función de clasificación en SQL:

SELECCIONARcategoría, color,
rango()
SOBRE (ordenar por color) AS item_rank
DE sahil.muestra;

Eche un vistazo a la salida para comprender cómo funciona esta función.

La función ordenar por ordena la categoría de color, mientras que la función de clasificación asigna una clasificación a cada color. Sin embargo, todos los mismos valores de color tienen el mismo rango, mientras que los diferentes colores tienen rangos separados. El color negro aparece tres veces dentro del conjunto de datos; en lugar de asignar un valor de clasificación de 1, 2 y 3, los elementos de color negro obtienen una clasificación de 1.

Sin embargo, el siguiente color, el marrón, obtiene un rango 4 en lugar del rango 2. La función de rango salta valores y asigna el siguiente valor cronológico a las diferentes entradas. Si desea asignar un valor de rango más significativo, puede utilizar el rango_denso() función.

La función dense_rank no omite ningún valor de clasificación durante la orden por función. Por ejemplo, los primeros tres elementos de color (negro) tendrán rango 1. Sin embargo, el siguiente color (Marrón) no tendrá un rango 4, sino un rango 2, que es el siguiente número cronológico en la lista de numeración. La función dense_rank es una función de ventana más práctica, ya que asigna un valor significativo a la lista de elementos.

Así es como puede usar la función dense_rank en SQL:

SELECCIONARcategoría, color,
rango_denso()
SOBRE (ordenar por color) AS item_rank
DE sahil.muestra;

Y aquí hay un ejemplo de cómo se verá la salida de esta función:

Funciones SQL al rescate

Las funciones de ventana de SQL son ideales para realizar operaciones analíticas avanzadas. Sin embargo, puede usar muchos otros comandos SQL para asegurarse de que sus habilidades computacionales sean de primera categoría. Cuando combina y calcula múltiples resultados de una sola vez, no hay nada mejor que usar las subconsultas de SQL.

Las subconsultas son una excelente herramienta para realizar funciones avanzadas, mejorando la calidad de sus resultados. Dependiendo de la necesidad de la hora, puede personalizar sus consultas y hacerlas más efectivas para satisfacer sus requisitos.