Saludos gente!! En esta oportunidad explicaremos algunas expresiones del Transact SQL para agrupar y resumir datos.
Como requisito necesitaremos la base de datos de ejemplo Northwind la cual la puedes descargar desde el indice o en el siguiente enlace : DESCARGAR BD NORTHWIND
Es indispensable tener la base de datos Nortwind porque la utilizaremos no sólo en estos ejemplos; también la usaremos en las publicaciones de ejercicios de este tema.
Bien, sin más preámbulos iniciemos.
[Order Details]
Esta tabla perteneciente a la Northwind, se encarga de manejar los pedidos.
Order Id : Nº de Pedido.
Producto Id : Nº de Producto.
Ambos campos son Primary Key, con lo que no puede haber una combinación de ambos campos que sea igual.
OrderId ProductId
1 A
1 B
1 C
2 A
3 C
Es decir en este caso no podría existir una nueva combinación “1 A” o “2 A”.
Quantity: Es la cantidad del producto del pedido.
- ROLLUP
SELECT PRODUCTID, ORDERID, SUM(QUANTITY) AS CANTIDAD_TOTAL FROM [ORDER DETAILS] GROUP BY PRODUCTID, ORDERID WITH ROLLUP ORDER BY PRODUCTID, ORDERID
Este ejemplo suma todas las cantidades, y mediante rollup, muestra una fila con la suma de todas las cantidades de cada producto, y además, otra fila con la suma de todas las cantidades de todos los productos. El resultado de este ejemplo, sería el que muestra la imagen:
SELECT PRODUCTID, ORDERID, SUM(QUANTITY) AS CANTIDAD_TOTAL FROM [ORDER DETAILS] WHERE ORDERID < 10250 GROUP BY PRODUCTID, ORDERID WITH ROLLUP ORDER BY PRODUCTID, ORDERID
- CUBE
SELECT PRODUCTID, ORDERID, SUM(QUANTITY) AS CANTIDAD_TOTAL FROM [ORDER DETAILS] WHERE ORDERID < 10250 GROUP BY PRODUCTID, ORDERID WITH CUBE ORDER BY PRODUCTID, ORDERID
En este caso como vemos en la imagen, hace un resumen con la suma de la cantidad de cada combinación posible entre el productid y el orderid.
- GROUPING
SELECT PRODUCTID, GROUPING(PRODUCTID), ORDERID, GROUPING(ORDERID), SUM(QUANTITY) AS CANTIDAD_TOTAL FROM [ORDER DETAILS] WHERE ORDERID < 10250 GROUP BY PRODUCTID, ORDERID WITH CUBE ORDER BY PRODUCTID, ORDERID
Vemos que por cada grouping que hemos puesto, sale una columna, 1 indica que el Null es creado por la clausula Cube y 0 indica que es de la tabla.
Poniéndole un alias al grouping saldría el nombre de columna que le indiquemos.
Finalmete, el resultado de estos procedimientos se puede mostrar en lugar de en cuadrículas, mediante texto, para ello, realizaremos el siguiente paso:
Espero haber ayudado en algo. Hasta la próxima oportunidad!
Twittear
No hay comentarios:
Publicar un comentario