+ All Categories
Home > Documents > Practica Base Northwind

Practica Base Northwind

Date post: 12-Oct-2015
Category:
Upload: tiburcio2000
View: 1,651 times
Download: 60 times
Share this document with a friend

of 25

Transcript
  • 5/22/2018 Practica Base Northwind

    1/25

    Base de Datos Nortwind

    Resumen del desarrollo de la prctica.

    Analizar la informacin almacenada en la base de datos NorthWind haciendo uso de lasdistintas funciones de MS-SQL server.

    Desarrollo de la prctica.

    Comentarios En una lneaUSE northwind

    SELECT unitprice,

    (unitprice * 1.1), -- precio incrementado en 10%productname

    FROM products

    GO

    Comentarios En un bloque

    /* Este cdigo devuelve todas las filas de la tabla products y muestra el precio por unidad, el

    precio umentado en un 10 por ciento y el nombre del producto. */USE northwind

    SELECT unitprice, (unitprice * 1.1), productname

    FROM productsGO

  • 5/22/2018 Practica Base Northwind

    2/25

    Variables

    Sintaxis DECLARE {@variableLocal tipoDatos} [,...n] SET @nombreVariableLocal =

    expresin

    En este ejemplo se crean las variables locales @EmpID y @vlname, se asigna un valor a@vlname y, a continuacin, se asigna un valor a @EmpID al consultar en la base de datos

    NorthWindpara seleccionar el registro que contiene el valor de la variable local @vlname.USE northwindDECLARE @EmpID varchar(11) ,@vlName char(20)

    SET @vlname = 'Dodsworth'SELECT @EmpID = employeeid FROM employees

    WHERE LastName = @vlnameSELECT @EmpID AS EmployeeID

    Funciones del sistema

    Ejemplo 1

    En este ejemplo se determina el promedio de la columna unitprice de todos los productos dela tabla products.

    USE northwindSELECT AVG(unitprice) AS AvgPrice FROM products

    Ejemplo 2

    En este ejemplo de funcin de metadatos se devuelve el nombre de la base de datos que se

    est utilizando actualmente.USE northwind

    SELECT DB_NAME() AS 'database'

    Ejemplo 3

    En este ejemplo se demuestra cmo puede convertir fechas a distintos estilos.SELECT 'ANSI:', CONVERT (varchar(30), GETDATE(), 102) AS Style

    UNION

    SELECT 'Japanese:', CONVERT(varchar(30), GETDATE(), 111)UNION

    SELECT 'European:', CONVERT(varchar(30), GETDATE(), 113)

    Ejemplo 4

    En este ejemplo se utiliza la opcin DATEFORMAT de la instruccin SET para dar formatoa las fechas de la duracin de una conexin. Esta configuracin slo se utiliza en la

    interpretacin de las cadenas de caracteres cuando se convierten a valores de fecha. No tiene

    efecto al mostrar los valores de fecha.SET DATEFORMAT dmy

    DECLARE @vdate datetime SET @vdate = '29/11/98'SELECT @vdate

  • 5/22/2018 Practica Base Northwind

    3/25

    Ejemplo 5

    En el ejemplo siguiente se calcula el valor ampliado de un producto que forma parte de un

    pedido; para ello se multiplica el precio unitario por la cantidad pedida y, a continuacin, se

    filtran los resultados de forma que slo se devuelvan las filas correspondientes a pedidos conun valor ampliado mayor de 10000.

    SELECT OrderID, ProductID,(UnitPrice * Quantity) as ExtendedAmountFROM [Order Details]

    WHERE (UnitPrice * Quantity) > 10000

    Ejemplo 6

    En este ejemplo se determina si un cliente tiene algn pedido antes de eliminarlo de la listade clientes.USE northwind

    IF EXISTS (SELECT * FROM ordersWHERE customerid = 'frank')

    PRINT '*** Customer cannot be deleted ***'ELSE

    BEGINDELETE customers WHERE customerid = 'frank' PRINT '*** Customer deleted ***'

    END

    Ejemplo 7

    Ejecutar las siguientes consultas en el analizador de consulta y describir que hace cada una,

    demostrar cmo afecta a los datos, es decir contrastar el antes y despus.

  • 5/22/2018 Practica Base Northwind

    4/25

  • 5/22/2018 Practica Base Northwind

    5/25

    Nota: En el ejercicio 15 la funcin EXEC ejectala por separado, del bloque de consulta delCREATE PROC porque es la forma de mandar a llamar a ese procedimiento que ya creaste.

    El @ es el parmetro que espera ese procedimiento para ejecutar la consulta que lleva dentro.

    El doble guin es la forma de comentar lneas en el Analizador de consultas.

  • 5/22/2018 Practica Base Northwind

    6/25

    Ejemplo 9

    Ejecutar las siguientes consultas en el analizador de consulta y describir que hace cada una,demostrar cmo afecta a los datos, es decir contrastar el antes y despus.

    01. USE NORTHWINDSELECT OrderID, Quantity As [Sin nombre de columna] FROM [Order Details]WHERE OrderID BETWEEN 11000 AND 11002

    02. SELECT OrderID, SUM (Quantity) As [Sin nombre de columna] FROM [OrderDetails] WHERE OrderID BETWEEN 11000 AND 11002 GROUP BY OrderID

    03. SELECT COUNT(*) FROM Employees

    04. SELECT * FROM Employees

    05. SELECT OrderID, AVG (Quantity) AS promedio FROM [Order Details] WHEREOrderID BETWEEN 11000 AND 11002 GROUP BY OrderID

    06.SELECT OrderID, MIN(Quantity) AS promedio FROM [Order Details] WHEREOrderID BETWEEN 11000 AND 11002 GROUP BY OrderID

    NOTA: En realidad todas las funciones de agregado ignoran los valoresNULL excepto COUNT (*).

    07.SELECT OrderID, SUM(Quantity) AS TOTAL FROM [Order Details] GROUPBY OrderID

    08. SELECT OrderID, SUM(Quantity) AS TOTAL FROM [Order Details] GROUPBY OrderID HAVING SUM(Quantity) > 300

  • 5/22/2018 Practica Base Northwind

    7/25

    Ejemplo 10

    Realice el siguiente ejercicio.

    --Creacin de BDCREATE Database ventasGO

    USE ventasGO---tabla vendedorCREATE TABLE VENDEDOR( idvendedor INT PRIMARY KEY , nombre VARCHAR(20),apellido VARCHAR(10),);GO---tabla ventasCREATE TABLE VENTAS(Idventa INT PRIMARY KEY , nombre VARCHAR(20), apellido VARCHAR(10), idvendedor INTforeign key (idvendedor) references VENDEDOR(idvendedor))

    Ejemplo 11Realice los siguientes ejercicios sobre la Base de Datos Nortwind

    ---------------------------------------------------------------------------INSTRUCCIONES SELECT ELEMENTALES-----------------------------------------------------------------------------1. Mostrar todas (*) las columnas de una tabla (from).select * from dbo.Products

    --2. Mostrar solo las columnas especificadas.select ProductID, ProductName, UnitPrice, UnitsInStock from dbo.Products

    --3. Incluir (ALL) filas duplicadas (valor predeterminado).

    select all * from dbo.Products --Es exactamente lo mismo que la instruccin 1.

    --4. No incluir (DISTINCT) filas duplicadas.select distinct * from dbo.Products

    --5. Renombrar (AS) columnas.select ProductID as Identificador, ProductName as [Nombre Producto], UnitPrice as [Precio Unidad],UnitsInStock as UnidadesStock from dbo.Products

    --6. Renombrar (AS) tablas.select * from dbo.Products as Productos

    ---------------------------------------------------------------------------INSTRUCCIONES WHERE (Condiciones en Select)-----------------------------------------------------------------------------1. Condiciones con expresiones matemticas boleanas (>, =, 25

  • 5/22/2018 Practica Base Northwind

    8/25

    --(Mostrar el nombre de los productos con precio igual a 21)

    select ProductName as Nombre from dbo.Productswhere UnitPrice = 21

    --2. Condiciones de intervalos numricos (BETWEEN AND).--(Mostrar los productos cuyo precio esta entre 25 y 35)

    select * from Productswhere UnitPrice between 25 and 35

    --3. Condiciones de cadenas de caracteres (LIKE _ , %).--

    (Mostrar todos los datos de los clientes cuyo nombre comienza por A)select * from Customerswhere ContactName like 'A%' -- El '%' significa cualquier cadena de caracteres.

    --(Mostrar los Paises que comienzan por U y despus un solo caracter).select Country as Paises from Customers

    where Country like 'U_' --El '_' significa cualquier caracter.

    --4. Mostrar solamente las filas con valores nulos (IS NULL) en una columnadeterminada.select * from dbo.Customerswhere Region is null

    --5. Mostrar solamente las filas con valores no nulos (IS NOT NULL) en unacolumna determinada.select * from Customerswhere Fax is not null

    --6. Mostrar valores determinados (IN).select * from Productswhere UnitPrice in(10, 20, 30, 40)

    --7. Mostrar valores condicionalmente en funcin de un grupo de valores deuna columna (ANY/SOME)

    --La clausula ANY es equivalente a SOME.--Cuando tenemos una consulta que

    devuelve un conjunto de resultados podemos necesitar compararlos--

    todos ellos y de una vez con otro valor. Lo mejor es ver un ejemplo de estas expresiones:

    -- Condicin Expresin Equivalente-- x > ANY (3, 5, 9) x > 3-- x > ANY (1, 2) x > 1-- x < ANY (1, 2) x < 2-- x = ANY (1, 2) (x = 1) OR (x = 2)-- x ANY (1, 2) (x 1) OR (x 2)

    --Mostrar los productos cuando su precio es mayor que los precios de los de

  • 5/22/2018 Practica Base Northwind

    9/25

    talles--de pedidos, cuando la cantidad del pedido es 130.

    select * from Productswhere UnitPrice > ANY

    (select UnitPrice from [Order Details] where Quantity = 130) -- Esta consulta devuelve 18.00 y 35.25.

    --Por lo tanto solo se mostrarn productos cuyo precio sea mayor que 18.00,incluido 35.25 si lo hubiera.

    --8. Con la clausula ALL podemos hacer lo mismo pero en este caso devolvertodos los productos

    --cuyo precio sea mayor que todos los precios de los detalles de pedidos de130. Es decir, mayor que

    --

    todos los valores devueltos por la segunda consulta (18.00, 35.25), o loque es lo mismo,--mayor que 35.25

    select * from Productswhere UnitPrice > ALL

    (select UnitPrice from [Order Details] where Quantity = 130)

    --9. Comprobar la existencia de un registro.

    --Mostrar los empleados cuya ciudad tambin exista en la tabla de empleados.

    select LastName, FirstName, City from Employees Ewhere exists

    (select * from Customers Cwhere E.City = C.City)

    ---------------------------------------------------------------------------INTRUCCIONES ORDER BY (Ordenacin en Select)-----------------------------------------------------------------------------1. Orden ascendente de filas.

    --(Tabla Productos ordenada por el precio de menor a mayor).select * from dbo.Productsorder by UnitPrice asc

    -- ASC es el valor predeterminado, se puede omitir.select * from Productsorder by UnitPrice

    --2. Orden descendente de filas.select * from Productsorder by UnitsInStock desc

  • 5/22/2018 Practica Base Northwind

    10/25

    --3. Combinaciones de orden en distintas filas.select ProductID, ProductName, UnitPrice, UnitsInStock from dbo.Productsorder by UnitPrice, UnitsInStock desc

    -------------------------------------------------------------------------

    --SUBCONSULTAS EN SELECT O CONSULTAS ANIDADAS----------------------------------------------------------------------------- Una subconsulta es una consulta SELECT dentro de un WHERE en una consulta previa SELECT. Es decir, realizamos-- dentro de una consulta, otra consulta para mostrar datos especificos dela primera consulta. Ejemplos:

    --1. Mostrar todos los empleados que tengan el mismo sexo (TitleOfCourtesy)que el empleado 9 (EmployeeID).select * from dbo.Employeeswhere TitleOfCourtesy = (select TitleOfCourtesy from dbo.Employees

    where EmployeeID = 9) --Esta subconsulta devuelve 'Ms'.

    --2. Mostrar todos los productos de las categoras (bdo.Categories) bebidas(Beverages) y condimentos (Condiments).select * from dbo.Productswhere CategoryID in (select CategoryID from dbo.Categories

    where CategoryName in ('Beverages','Condiments')) --Esta subconsulta devuelve 1 y 2.

  • 5/22/2018 Practica Base Northwind

    11/25

    ---------------------------------------------------------------------------FUNCIONES DE AGREGACIN EN SELECT-----------------------------------------------------------------------------1. Obtener el nmero de filas de una tabla --> COUNT(*).select count(*) from dbo.Customers --Se cuentan todos los valores, incluidos los NULL.

    -- Se puede dar nombre a esta columna de la siguiente forma.select count(*) as [Nmero de filas] from dbo.Customers

    --2. Obtener el mmero de filas de una columna determinada --> COUNT(NombreColumna).select count(Region) as [NFilas no NULL]from dbo.Customers --No se incluyen los valores NULL.

    --3. Obtener nmero de filas para varias columnas determinadas.select count(Region) as FilasNoNULL_Region, count(Fax) as FilasNoNULL_Faxfrom dbo.Customers

    --4. Obtener el valor mximo (MAX) y mnimo (MIN) de una columna.

    select max(UnitPrice) as [Precio mximo], min(UnitsInStock) as [Stock mnimo] from dbo.Products

    --5. Obtener un sumatorio (SUM) de una columna determinada.select sum(Freight) as [Peso Total] from dbo.Orders

    --6. Obtener la media (AVG) de los valores de una columna determinada.select avg(Freight) as [Peso Medio] from dbo.Orders

    ---------------------------------------------------------------------------INSTRUCCIN GROUP BY (Agrupamiento de filas en funciones de agregacin)-----------------------------------------------------------------------------La instruccin GROUP BY permite especificar las columnas sobre las que sequieren aplicar las funciones de--agregacin en lugar de hacerlo en una tabla completa. Es decir, muestra un resultado de la funcin de agregacin--para cada elemento de la columna que especifiquemos. Ejemplos:

    --1. Mostrar cuantas veces se repite cada precio de los productos.select UnitPrice, count(*) as [Filas con este precio] from Productsgroup by UnitPrice

    --2. Mostrar nmero de clientes de cada region y ciudad de USA.

    select Region, City, count(*) as [N Clientes] from Customerswhere Country = 'USA'group by Region, Cityorder by [N Clientes] desc

    --NOTA 1: Siempre debe especificarse las mismas columnas en SELECT que en GROUP BY.--NOTA 2: Es una buena prctica ordenar (ORDER BY) los elementos cuando se

  • 5/22/2018 Practica Base Northwind

    12/25

    realizan este tipo de consultas.

    ---------------------------------------------------------------------------INSTRUCCIN HAVING (Condiciones en los resultados de GROUP BY)-----------------------------------------------------------------------------La instruccin HAVING es similar a WHERE pero para agrupamientos de funciones de agregacin. Ejemplo:

    --1. Mostrar lo mismo que el ejercicio 1 de la seccin anterior, con precios mayor que 10 y repiticiones mayor que 2.select UnitPrice, count(*) as [Filas con este precio] from Productswhere UnitPrice > 10group by UnitPricehaving count(*) > 2

    -------------------------------------------------------------------------

    Ejemplo 12

    Realice el siguiente ejercicio

    use Northwindgo

    if exists (select * from sys.tables where name = 'varchar_variable_dcha')drop table dbo.varchar_variable_dcha

    go

    CREATE TABLE [dbo].varchar_variable_dcha(id bigint identity primary key,c varchar(200) NULL

    )go

    declare @i intset @i = 1while @i

  • 5/22/2018 Practica Base Northwind

    13/25

    Ejemplo 13

    En este ejercicio se debe escribir sentencias SQL. Cada declaracin slo utilizar una sola tabla. Pasarpor correo al profesor todas las sentecias.

    1. Una lista de todos los detalles de la tabla de empleados.

    2. Una lista de los nombres y apellidos de todos los empleados.3. Una lista de todos los nombres de las ciudades que aparecen en la tabla de empleados. Nomostrar 2 veces un mismo nombre de ciudad.

    4. Una lista de los nombres de productos y precios unitarios.5. En la tabla de empleados: una lista de los detalles completos de los empleados que viven en

    EE.UU.6. A partir de la tabla Pedidos, listar todos los pedidos que tienen un gasto de envio > 50.7. De la tabla de clientes: listar nombre de la empresa de todos los clientes donde el cargo es

    igual a Propietario.8. A partir de los clientes una lista de todos donde el nombre del cliente comienza con la letra

    "A.9. Una lista de los nombres de clientes donde la regin no est en blanco.10. Una lista de todos los productos, ordenado por precio unitario (el ms barato primero).11. Una lista de todos los productos, ordenado por precio unitario (el ms caro primero).12. El nmero total de empleados. Nombre de la columna de salida "TotalEmpleados".

    13. De la tabla de Pedidos, el pedido con el menor gasto de envi, el gasto de envi promedio y elmximo gasto de envi (puede estar separado en 3 consultas distintas).

    14. Utilizando la tabla de clientes una lista de los nombres de ciudades y el nmero de clientes encada ciudad.

    15. Utilizando la tabla de clientes una lista de los nombres de ciudades y el nmero de clientes encada ciudad. Solo las ciudades con al menos 2 clientes deben aparecer en la lista.

    16. Insertar el cliente nuevo completando todos los campos de la tabla.17. Actualizar el nombre del nuevo cliente pasando nmero de ID obtenido en el punto 16.18. Eliminar el cliente insertado en el punto 16.

  • 5/22/2018 Practica Base Northwind

    14/25

    Procedimientos para agrupar y resumir datos 1

    Prctica A: Procedimientos para agrupar y resumir datos

    ObjetivosDespus de realizar esta prctica, el alumno ser capaz de:

    Utilizar las clusulas GROUP BY y HAVING para resumir datos porgrupos.

    Utilizar los operadores ROLLUP y CUBE, y la funcin GROUPING paragenerar datos de resumen.

    Utilizar las clusulas COMPUTE y COMPUTE BY para generar informescon secciones, totales y promedios.

    Requisitos previos El archivo lab052.zip contiene los archivos de comandos necesarios para la

    realizacin de la prctica, as como las correspondientes soluciones.

    Ejercicio 1

    Uso de la palabra clave TOP nEn este ejercicio, va a utilizar la palabra clave TOP ny la clusula WITH TIES

    para obtener las primeras filas, o un porcentaje de ellas, de un conjunto deresultados. La carpeta Soluciones contiene las secuencias de comandos

    completas para este ejercicio.

    Para utilizar la palabra clave TOP ny presentar las primeras filas deun conjunto de resultadosEn este procedimiento, debe modificar una secuencia de comandos para quedevuelva las diez primeras filas de una consulta. La secuencia de comandos

    completa para este procedimiento es Answer_TopN1.sql.

    Abra el Analizador de consultas de SQL Server y, si as se le pide, inicie una

    sesin en el servidor local con autenticacin de Microsoft Windows.

    En la lista BD, haga clic en northwind.

    Abra y examine la secuencia de comandos TopN.sql, que corresponde a una

    consulta que calcula el importe total de las ventas de cada pedido de la tabla

    order detailsy devuelve los resultados en orden decreciente.Modifique la consulta descrita en el paso 4 para que slo devuelva las diez

    primeras filas.

    USE northwind

    SELECT TOP 10

    orderid

    ,(unitprice * quantity) AS totalsale

    FROM [order details]

    ORDER BY (unitprice * quantity) DESC

    GO

    Ejecute la consulta para comprobar que slo devuelve diez filas.

    Su resultado ser similar al siguiente conjunto de resultados.Resultado

  • 5/22/2018 Practica Base Northwind

    15/25

    2 Procedimientos para agrupar y resumir datos

    orderid totalsale

    10865 15810.0000

    10981 15810.0000

    10353 10540.000010417 10540.0000

    10889 10540.0000

    10424 10329.2000

    10897 9903.2000

    10372 8432.0000

    10540 7905.0000

    10816 7905.0000

    (10 filas afectadas)

    Para presentar los primeros valores de un conjunto de resultadosusando la palabra clave TOP n

    En este procedimiento va a utilizar la palabra clave TOP npara presentar losprimeros valores de un conjunto de resultados. La secuencia de comandos

    completa para este procedimiento es Answer_TopN2.sql.

    Modifique la consulta descrita en el paso 5 del procedimiento anterior para que

    devuelva los diez primeros productos (incluidos los valores iguales) que

    tengan el mayor importe total.

    USE northwind

    SELECT TOP 10 WITH TIES

    orderid

    ,(unitprice * quantity) AS totalsale

    FROM [order details]

    ORDER BY (unitprice * quantity) DESCGO

    Ejecute la consulta para comprobar que devuelve once filas.

  • 5/22/2018 Practica Base Northwind

    16/25

    Procedimientos para agrupar y resumir datos 3

    Su resultado ser similar al siguiente conjunto de resultados.

    orderid totalsale

    10865 15810.000010981 15810.0000

    10353 10540.0000

    10417 10540.0000

    10889 10540.0000

    10424 10329.2000

    10897 9903.2000

    10372 8432.0000

    10540 7905.0000

    10816 7905.0000

    10817 7905.0000

    (11 filas afectadas)

    Resultado

  • 5/22/2018 Practica Base Northwind

    17/25

    4 Procedimientos para agrupar y resumir datos

    Ejercic io 2

    Uso de las clusulas GROUP BY y HAVING

    En este ejercicio, va a utilizar las clusulas GROUP BY y HAVINGpara resumir datos de la base de datosNorthwind. La carpeta Solucionescontiene las secuencias de comandos completas para este ejercicio.

    Para utilizar la clusula GROUP BY para resumir los datosEn este procedimiento va a abrir una secuencia de comandos que contiene una

    consulta con la clusula GROUP BY. A continuacin, modificar la consultapara obtener resultados diferentes.

    Abra y examine la secuencia de comandos Groupby.sql. Se trata de una

    consulta que calcula la cantidad total de artculos pedidos de dos categoras

    distintas de artculos de la tabla order details.

    Ejecute la consulta para revisar los resultados.

    Su resultado ser similar al siguiente conjunto de resultados.

    categoryid total_quantity

    1 9532

    2 5298

    (2 filas afectadas)

    Para calcular la cantidad total para cada una de las categorasAnswer_Groupby1.sql es la secuencia de comandos completa de este

    procedimiento.

    Modifique la secuencia de comandos descrita en el paso 1 del procedimientoanterior para resumir la cantidad por categora para todos los productos, sea

    cual sea su categora.

    USE northwind

    SELECT categoryid, SUM(quantity) AS total_quantity

    FROM [order details] AS od

    INNER JOIN products AS p

    ON od.productid = p.productid

    GROUP BY categoryid

    GO

    Ejecute la consulta para revisar los resultados.

    Resultado

  • 5/22/2018 Practica Base Northwind

    18/25

    Procedimientos para agrupar y resumir datos 5

    Su resultado ser similar al siguiente conjunto de resultados.

    categoryid total_quantity

    1h 95322 5298

    3 7906

    4 9149

    5 4562

    6 4199

    7 2990

    8 7681

    (8 filas afectadas)

    Para calcular la cantidad total para cada pedidoEn este procedimiento calcular la cantidad total para cada pedido.

    Answer_Groupby2.sql es la secuencia de comandos completa de esteprocedimiento.

    Modifique la secuencia de comandos descrita en el paso 1 del procedimiento

    anterior para resumir la cantidad por orderid(pedido) para todos los

    productos, sea cual sea su categora.

    USE northwind

    SELECT orderid, SUM(quantity) AS total_quantity

    FROM [order details] AS od

    INNER JOIN products AS p

    ON od.productid = p.productid

    GROUP BY orderid

    GO

    Ejecute la consulta para revisar los resultados.

    Su resultado ser similar al siguiente conjunto de resultados parciales.

    orderid total_quantity

    10248 27

    10249 49

    10250 60

    .

    .

    .

    11075 42

    11076 5011077 72

    (830 filas afectadas)

    Resultado

    Resultado

  • 5/22/2018 Practica Base Northwind

    19/25

    6 Procedimientos para agrupar y resumir datos

    Para calcular el nmero de pedidos con ms de 250 unidades pedidasEn este procedimiento calcular el nmero de pedidos con ms de 250 unidadespedidas. Answer_Groupby3.sql es la secuencia de comandos completa de este

    procedimiento.

    Modifique la secuencia de comandos descrita en el paso 1 del procedimiento

    anterior para resumir la cantidad por orderid(pedido) para todos losproductos, sea cual sea su categora, y devolver slo los pedidos que tengan

    ms de 250 unidades pedidas

    USE northwind

    SELECT orderid, SUM(quantity) AS total_quantity

    FROM [order details] AS od

    INNER JOIN products AS p

    ON od.productid = p.productid

    GROUP BY orderid

    HAVING SUM(quantity) > 250

    GO

    Ejecute la consulta para revisar los resultados.

    Su resultado ser similar al siguiente conjunto de resultados.

    orderid total_quantity

    10515 286

    10612 263

    10658 255

    10678 280

    10847 288

    10895 346

    10990 256

    11030 330

    (8 filas afectadas)

    Resultado

  • 5/22/2018 Practica Base Northwind

    20/25

    Procedimientos para agrupar y resumir datos 7

    Ejercicio 3

    Uso de los operadores ROLLUP y CUBE

    En este ejercicio, va a utilizar los operadores ROLLUP y CUBE para generardatos de resumen. Tambin va a utilizar la funcin GROUPING para

    determinar las filas del resultado que son resmenes. La carpeta Solucionescontiene las secuencias de comandos completas para este ejercicio.

    Para utilizar el operador ROLLUP con el fin de generar resultados deresumen

    En este procedimiento va a utilizar el operador ROLLUP con las clusulasGROUP BY y HAVING para generar resultados de resumen. La secuencia decomandos completa para este procedimiento es Answer_Rollup1.sql.

    Abra y examine la secuencia de comandos Answer_Rollup1.sql. Se trata de una

    consulta que resume la cantidad de artculos pedidos por cada productidyordered, y realiza un clculo acumulativo.

    Modifique la consulta descrita en el paso 1 para que en el resultado sloaparezca el nmero de producto 50, con una clusula WHERE, y despus

    ejecute la consulta.

    USE northwind

    SELECT productid, orderid, SUM(quantity) AS total_quantity

    FROM [order details]

    WHERE productid = 50

    GROUP BY productid, orderid

    WITH ROLLUP

    ORDER BY productid, orderid

    GO

    Ejecute la consulta para revisar los resultados. Cuente las filas que tienen

    valores nulos.

    Su resultado ser similar al siguiente conjunto de resultados.

    productid orderid total_quantity

    NULL NULL 235

    50 NULL 235

    50 10350 15

    50 10383 15

    50 10429 40

    50 10465 25

    50 10637 25

    50 10729 40

    50 10751 20

    50 10920 24

    50 10948 9

    50 11072 22

    (12 filas afectadas)

    Resultado

  • 5/22/2018 Practica Base Northwind

    21/25

    8 Procedimientos para agrupar y resumir datos

    4. Qu significan los valores nulos en las columnas productidy orderid?Los valores nulos en una fila indican que el valor que aparece en lacolumna total_quantity de esa fila es la suma de todos los valores

    total_quantity sin agrupar en la columna que tiene el valor nulo.

    Por ejemplo, el valor total_quantity en la fila en que productid yorderid tienen valor nulo es la suma de todos los valores total_quantityde la tabla.

    _____________________________________________________________

    _____________________________________________________________

    Para utilizar el operador CUBE con el fin de generar resultados deresumen

    En este procedimiento va a usar el operador CUBE y la funcin GROUPINGpara diferenciar entre las filas de resumen y detalles del conjunto de resultados.La secuencia de comandos completa para este procedimiento es

    Answer_Cube1.sql.

    Abra y examine la secuencia de comandos Answer_Rollup1.sql. Se trata de una

    consulta que resume la cantidad de artculos pedidos por cada productidyordered, y realiza un clculo acumulativo.

    Modifique la consulta descrita en el paso 1 para usar el operador CUBE en

    lugar del operador ROLLUP. Adems, utilice la funcin GROUPING en las

    columnas productidy orderidpara distinguir filas de resumen y filas dedetalle dentro del conjunto de resultados, y, despus, ejecute la consulta.

    USE northwind

    SELECT productid

    ,GROUPING(productid)

    ,orderid

    ,GROUPING(orderid)

    ,SUM(quantity) AS total_quantity

    FROM [order details]

    WHERE productid = 50

    GROUP BY productid, orderid

    WITH CUBE

    ORDER BY productid, orderid

    GO

    Ejecute la consulta para revisar los resultados.

  • 5/22/2018 Practica Base Northwind

    22/25

    Procedimientos para agrupar y resumir datos 9

    Su resultado ser similar al siguiente conjunto de resultados.

    productid orderid total_quantity

    NULL 1 NULL 1 235

    NULL 1 10350 0 15

    NULL 1 10383 0 15

    NULL 1 10429 0 40

    NULL 1 10465 0 25

    NULL 1 10637 0 25

    NULL 1 10729 0 40

    NULL 1 10751 0 20

    NULL 1 10920 0 24

    NULL 1 10948 0 9

    NULL 1 11072 0 22

    50 0 NULL 1 235

    50 0 10350 0 15

    50 0 10383 0 1550 0 10429 0 40

    50 0 10465 0 25

    50 0 10637 0 25

    50 0 10729 0 40

    50 0 10751 0 20

    50 0 10920 0 24

    50 0 10948 0 9

    50 0 11072 0 22

    (22 filas afectadas)

    Qu filas son de resumen?

    Las filas que tienen el nmero 1 en las columnas de la funcinGROUPING.

    ____________________________________________________________

    ____________________________________________________________

    Qu filas son el resumen por producto? Y por pedido?

    Si el nmero 1 est presente en la columna generada por la funcinGROUPING para la columna productid, la fila es un resumen porpedido. La columna productid de dicha fila es NULL porque es unresumen, no una fila de detalle que contiene un valor NULL. La fila quetiene un nmero 1 en la columna GROUPING es un resumen para el

    producto nmero 50. La fila que tiene un nmero 1 en las dos columnasGROUPING es un total global.

    ____________________________________________________________

    ____________________________________________________________

    Resultado

  • 5/22/2018 Practica Base Northwind

    23/25

    10 Procedimientos para agrupar y resumir datos

    Ejercic io 4

    Uso de las clusulas COMPUTE y COMPUTE BY

    En este ejercicio va a utilizar las clusulas COMPUTE y COMPUTE BY paragenerar informes con secciones y totales, y promedios finales.

    La carpeta Soluciones contiene las secuencias de comandos completas para este

    ejercicio.

    Para utilizar la clusula COMPUTE con el fin de generar informesEn este procedimiento va a modificar una consulta existente al agregar las

    clusulas COMPUTE y COMPUTE BY para generar subtotales y totalesfinales. Answer_Compute1.sql es la secuencia de comandos completa de este

    procedimiento.

    Abra y examine la secuencia de comandos Answer_Compute1.sql. Se trata deuna consulta que devuelve el nmero de pedido (orderid) y la cantidad(quantity) pedida para todos los pedidos cuyo orderid> 11070.

    Modifique la consulta descrita en el paso 1 para generar un total final de lacolumna cantidad (quantity) mediante el uso de la clusula COMPUTE.

    USE northwind

    SELECT orderid, quantity

    FROM [order details]

    WHERE orderid >= 11070

    COMPUTE SUM(quantity)

    GO

    Ejecute la consulta para revisar los resultados.

    Su resultado ser similar al siguiente conjunto de resultados parciales.

    orderid quantity

    11070 40

    11070 20

    11070 30

    .

    .

    .

    11077 24

    11077 4

    11077 1

    Sum

    ==========

    543

    (45 filas afectadas)

    Resultado

  • 5/22/2018 Practica Base Northwind

    24/25

    Procedimientos para agrupar y resumir datos 11

    Para utilizar la clusula COMPUTE BY con el fin de generar informesEn este procedimiento, va a modificar una consulta existente. Para ello,agregar la clusula COMPUTE BY con el fin de generar totales finales.

    Answer_Compute2.sql es la secuencia de comandos completa de esteprocedimiento.

    Abra y examine la secuencia de comandos Answer_Compute2.sql. Se trata deuna consulta que devuelve el nmero de pedido (orderid) y la cantidad(quantity) pedida para todos los pedidos cuyo orderid> 11070.

    Modifique la consulta descrita en el paso 1 para generar un informe consecciones que proporcione la cantidad total de los pedidos 11075 y 11076.

    USE northwind

    SELECT orderid, quantity

    FROM [order details]

    WHERE orderid in ( 11075, 11076 )

    ORDER BY orderidCOMPUTE SUM(quantity) BY orderid

    GO

    Ejecute la consulta para revisar los resultados.

    Su resultado ser similar al siguiente conjunto de resultados.

    orderid quantity

    11075 10

    11075 30

    11075 2

    Sum

    ==========42

    11076 20

    11076 20

    11076 10

    Sum

    ==========

    50

    (8 filas afectadas)

    Resultado

  • 5/22/2018 Practica Base Northwind

    25/25

    12 Procedimientos para agrupar y resumir datos

    Para agregar la cantidad total y cantidad promedio al final del informecon secciones

    En este procedimiento va a agregar la cantidad total y cantidad promedio al

    final del informe con secciones. Answer_Compute3.sql es la secuencia decomandos completa de este procedimiento.

    Modifique la consulta descrita en el paso 1 del procedimiento anterior para

    agregar la cantidad total y cantidad promedio al final del informe con

    secciones.

    USE northwind

    SELECT orderid, quantity

    FROM [order details]

    WHERE orderid in ( 11075, 11076 )

    ORDER BY orderid

    COMPUTE SUM(quantity) BY orderid

    COMPUTE SUM(quantity)COMPUTE AVG(quantity)

    GO

    Ejecute la consulta para revisar los resultados.

    Su resultado ser similar al siguiente conjunto de resultados. Observe que este

    conjunto de resultados es similar al del paso 3 del procedimiento anterior, conla adicin de los totales finales (cantidad total y cantidad promedio).

    orderid quantity

    11075 10

    11075 30

    11075 2

    Sum

    ==========

    42

    11076 20

    11076 20

    11076 10

    Sum

    ==========

    50

    Sum

    ==========92

    Avg

    ==========

    15

    (10 filas afectadas)

    Resultado


Recommended