Cómo utilizar una ventana de sql para crear un conjunto de resultados

Las ventanas y las funciones de la ventana se introdujeron por primera vez en SQL: 1999. Con una ventana, un usuario puede particionar, opcionalmente, un conjunto de datos, opcionalmente ordenar las filas en cada partición, y especificar un conjunto de filas (marco de la ventana) que se asocia con una fila dada.

El marco de la ventana de una fila R es un subconjunto de la partición que contiene R. Por ejemplo, el marco de la ventana puede consistir en todas las filas desde el principio de la partición hasta e incluyendo R, basado en la forma de filas se ordenan en la partición .

Una función de ventana calcula un valor para una fila R, basado en las filas en el marco de ventana de R.

Video: Insertar,Consultar,Modificar y Eliminar datos de una Tabla de MySQL desde Netbeans - Parte 1

Por ejemplo, suponga que tiene una tabla de ventas que tiene columnas de CustID, InvoiceNo y VentaTotal. Su gerente de ventas puede querer saber lo que las ventas totales fueron a cada cliente en un rango específico de números de factura. Se puede obtener lo que quiere con el siguiente código SQL:

SELECT CustID, InvoiceNo, SUM (VentaTotal) OVER (PARTITION BY CustIDORDER POR InvoiceNoROWS BETWEENUNBOUNDED PRECEDINGAND ACTUAL fila) de Sales-

los ENCIMA cláusula determina cómo se dividen las filas de la consulta antes de ser procesadas, en este caso por el SUMA función. Una partición se asigna a cada cliente. Dentro de cada partición será una lista de números de factura, y asociado a cada una de ellas será la suma de todas las Venta total Los valores por encima del rango especificado de filas, para cada cliente.

Video: Como editar ventanas en revit

SQL: 2011 ha añadido varias mejoras importantes a la funcionalidad original de la ventana, la incorporación de nuevas palabras clave.

Cómo particionar una ventana en cubos con NTILE

los NTILE función de ventana reparte una partición ventana ordenado en algún número entero positivo norte de cubos, la numeración de los cubos de 1 a norte. Si el número de filas de una partición metro no es divisible por norte, a continuación, después de la función NTILE llena los cubos de manera uniforme, el resto de Minnesota, llamado r, se reparte a la primera r cubos, haciéndolas más grandes que los otros cubos.

Supongamos que se desea clasificar a sus empleados por el salario, la partición de ellas en cinco cubos, de mayor a menor. Puede hacerlo con el siguiente código:

SELECT Nombre, Apellido, NTILE (5) OVER (ORDER BY Salario DESC) AS BUCKETFROM Empleado-

Si hay, por ejemplo, 11 empleados, cada cubo se llena con dos excepto para el primer cubo, que se llena con tres. El primer cubo contendrá los tres empleados mejor pagados, y el quinto cubo contendrá los dos empleados con salarios más bajos.

Como funciones de la ventana de nido

A veces para obtener el resultado que necesita, la forma más fácil es para anidar una función dentro de otra. SQL: 2011 añadió la capacidad de hacer tales anidación con funciones de ventana.

A modo de ejemplo, consideremos un caso en que un inversor en bolsa está tratando de determinar si es un buen momento para comprar una acción en particular. Para tener una idea de esto, ella decide comparar el precio actual de las acciones al precio que se vendió por sobre las 100 operaciones inmediatamente anteriores. Se pregunta, ¿cuántas veces en las 100 operaciones anteriores se venden por menos del precio actual.

Video: Como crear y eliminar esquemas en MySQL Workbench 5.5

Para llegar a una respuesta, se hace la siguiente consulta:

SaleTime SELECT, SUM (CASE CUANDO SalePrice 

La ventana abarca las 100 filas anteriores a la fila actual, que corresponden a los 100 ventas inmediatamente anterior al momento actual. Cada vez que se evalúa una fila en la que el valor de Precio de venta es menor que el precio más reciente, se añade 1 a la suma.

El resultado final es un número que indica el número de ventas de la anterior centenar que se hicieron a un precio inferior al precio actual.

¿Cómo evaluar grupos de filas

A veces, la clave de ordenación que ha elegido para colocar una partición con el fin tendrá duplicados. Es posible que desee evaluar todas las filas que tienen la misma clave de ordenación como grupo. En tales casos, puede utilizar el GRUPOS opción. Con ella se puede contar grupos de filas en las que las claves de clasificación son idénticos.

He aquí un ejemplo:

SELECT CustomerID, Fecha de Venta, SUM (InvoiceTotal) OVER (PARTITION BY CustomerIDORDER POR SaleDateGROUPS ENTRE 2 precedente y 2 SIGUIENTE) de clientes-

El marco de la ventana en este ejemplo consiste en hasta cinco grupos de filas: dos grupos antes del grupo que contiene la fila actual, el grupo que contiene la fila actual, y dos grupos siguientes el grupo que contiene la fila actual. Las filas de cada grupo tienen el mismo Fecha de venta, y el Fecha de venta asociado a cada grupo es diferente de la Fecha de venta valores para los otros grupos.

Artículos Relacionados