Consultas y Ejemplos
description
Transcript of Consultas y Ejemplos
Ejercicios de Consultas con Ejemplos
Leslie Lara Cerón
Lic. Eliud Paredes Reyes
8-TI-G3
Contenido1.2.3.4. Selección de datos : SELECT............................................................................................3
Ejemplo........................................................................................................................................3
1.2.3.4.2. Crear una tabla a partir de una consulta....................................................................3
Ejemplo........................................................................................................................................4
1.2.4. INSTRUCCION MERGE........................................................................................................4
Ejemplo........................................................................................................................................5
1.3. RECUPERACIÓN AVANZADA DE CONSULTA DE DATOS.......................................................5
1.3.1. COMBINACION DE TABLAS: JOIN......................................................................................5
1.3.1.1. COMBINACION INTERNA................................................................................................5
Ejemplo........................................................................................................................................5
1.3.1.2. COMBINACIONES EXTERNAS..........................................................................................6
A. LEFT JOIN o LEFT OUTER JOIN.................................................................................................6
Ejemplo........................................................................................................................................6
B. RIGHT JOIN o RIGHT OUTER JOIN............................................................................................6
Ejemplo........................................................................................................................................6
C. FULL JOIN o FULL OUTER JOIN.................................................................................................7
Ejemplo........................................................................................................................................7
D. COMBINACION CRUZADA.......................................................................................................7
Ejemplo........................................................................................................................................8
1.3.2. Datos Agrupados...............................................................................................................8
1.3.2.1. Funciones Agregadas......................................................................................................8
1.3.2.1.1. Uso de la función COUNT(*)........................................................................................8
Ejemplo........................................................................................................................................8
1.3.2.1.2. Uso de la función AVG.................................................................................................8
Ejemplo........................................................................................................................................9
1.3.2.1.3. Uso de la función MAX() y MIN()................................................................................9
Ejemplo........................................................................................................................................9
1.3.2.1.4. Uso de la función SUM................................................................................................9
Ejemplo........................................................................................................................................9
1.3.2.2. Cláusula GROUP BY........................................................................................................9
Ejemplo:.....................................................................................................................................10
1.3.2.3. Cláusula HAVING....................................................................................................10
Ejemplo......................................................................................................................................10
1.3.3. AGREGAR CONJUNTO DE RESULTADOS: UNION...........................................10
Ejemplo:.....................................................................................................................................11
1.3.4. RESUMEN DE DATOS: CUBE............................................................................................11
Ejemplo......................................................................................................................................12
1.3.4.1. Agregar permutaciones múltiples: operador CUBE.....................................................13
Ejemplo..................................................................................................................................13
1.3.4.2. RESUMEN DE DATOS: ROLLUP.....................................................................................14
Ejemplo......................................................................................................................................14
Conclusion.................................................................................................................................15
1.2.3.4. Selección de datos : SELECTBEGINDECLARE @MYPRODUCTO INTSET @MYPRODUCTO = 3-- EVALUAR SI LA VARIABLE @MYPRODUCTO ES DIFERENTE DE 0IF (@MYPRODUCTO <> 0)
SELECT IDPRODUCTO 'CODIGO',NOMPRODUCTO 'PRODUCTO',PRECIOUNIDAD 'PRECIO' FROM COMPRA.PRODUCTOS WHERE IDPRODUCTO = @MYPRODUCTO;
END
EjemploBeginDeclare @Mycantidad IntSet @Mycantidad = 3-- Evaluar Si La Variable @Myproducto Es Diferente De 0If (@Mycantidad <> 0)Select Idproducto 'Codigo',Cantidad 'Cantidad',Descuento 'Descuento' From Pedidosdeta Where Idpedido = @Mycantidad;End
1.2.3.4.2. Crear una tabla a partir de una consultaSELECT IDEMPLEADO,APEEMPLEADO,NOMEMPLEADOINTO DBO.EMPLEADOBAKFROM RRHH.EMPLEADOSWHERE IDCARGO = (SELECT C.IDCARGOFROM RRHH.CARGOS CWHERE DESCARGO = 'SUPERVISOR DE VENTAS')GOSELECT * FROM DBO. EMPLEADOBAK
EjemploSELECT IdCliente,NomCliente,DirCliente,IdPaisINTO DBO.ClientesConsuFROM ClientesWHERE IdPais = (SELECT p.IdPaisFROM Paises pwhere NombrePais='Mexico')GOSELECT * FROM DBO. ClientesConsu
1.2.4. INSTRUCCION MERGEDECLARE @PAIS VARCHAR(50), @ID CHAR(3)SET @PAIS='MEXICO'SET @ID='3'MERGE PAISES AS TARGETUSING (SELECT @ID, @PAIS)AS SOURCE (IDPAIS, NOMBREPAIS)ON (TARGET.IDPAIS = SOURCE.IDPAIS)WHEN MATCHED THENUPDATE SET NOMBREPAIS = SOURCE.NOMBREPAISWHEN NOT MATCHED THENINSERT VALUES(SOURCE.IDPAIS, SOURCE.NOMBREPAIS);
EjemploDECLARE @Cargos VARCHAR(50), @ID CHAR(3)SET @Cargos='Empleado'SET @ID='1'MERGE Cargos AS TARGETUSING (SELECT @ID, @Cargos)AS SOURCE (IdCargos, DesCargo)ON (TARGET.IdCargos = SOURCE.IdCargos)WHEN MATCHED THENUPDATE SET DesCargo = SOURCE.DesCargoWHEN NOT MATCHED THENINSERT VALUES(SOURCE.IdCargos, SOURCE.DesCargo);
1.3. RECUPERACIÓN AVANZADA DE CONSULTA DE DATOS1.3.1. COMBINACION DE TABLAS: JOIN
1.3.1.1. COMBINACION INTERNA.SELECT C.IDCLIENTE, C.NOMCLIENTE, C.DIRCLIENTE, P.NOMBREPAISFROM VENTAS.CLIENTES C INNER JOIN VENTAS.PAISES PON C.IDPAIS = P.IDPAIS
EjemploSELECT c.IdPedido, c.Descuento, p.NomProducto, p.PrecioUnidadFROM PedidosDeta c INNER JOIN Productos pON c.IdProducto = p.IdProducto
1.3.1.2. COMBINACIONES EXTERNAS
A. LEFT JOIN o LEFT OUTER JOINSELECT C.*, P.IDPEDIDOFROM VENTAS.CLIENTES C INNER JOIN VENTAS.PEDIDOSCABE PON C.IDCLIENTE = P.IDCLIENTE
EjemploSELECT e.NomEmpleado,e.DirEmpleado,e.FecContrata,p.IdEmpleado,p.FechaEntregaFROM Empleados e INNER JOIN PEDIDOSCABE pON e.IdEmpleado = p.IdEmpleado
B. RIGHT JOIN o RIGHT OUTER JOINSELECT PD.*, PO.NOMPRODUCTOFROM COMPRAS.PRODUCTOS PO RIGHT JOIN VENTAS.PEDIDOSDETA PDON PD.IDPRODUCTO = PO.IDPRODUCTO
EjemploSELECT c.* , p.NomProducto, p.PrecioUnidadFROM Categorias c RIGHT JOIN Productos pON c.IdCategoria = p.IdCategoria
C. FULL JOIN o FULL OUTER JOINSELECT PD.*, PO.NOMPRODUCTOFROM VENTAS.PEDIDOSDETA PD FULL JOIN COMPRAS.PRODUCTOS POON PD.IDPRODUCTO = PO.IDPRODUCTO
EjemploSELECT pr.IdPais,pr.NomProveedor,po.PrecioUnidad,po.NomProductoFROM Proveedores pr FULL JOIN Productos poON pr.IdProveedor=po.IdProveedor
D. COMBINACION CRUZADASELECT P.IDPRODUCTO, P.NOMPRODUCTO, PR.NOMPROVEEDORFROM COMPRAS.PRODUCTOS P CROSS JOIN COMPRAS.PROVEEDORES PR
EjemploSELECT c.NombreCategoria,c.Descripcion,p.NomProveedor,p.CargoContactoFROM Categorias c CROSS JOIN Proveedores p
1.3.2. Datos Agrupados
1.3.2.1. Funciones Agregadas
1.3.2.1.1. Uso de la función COUNT(*)SELECT COUNT(*) AS 'CANTIDAD DE PEDIDOS'FROM VENTAS.PEDIDOSCABEWHERE DATEPART(YY,FECHAPEDIDO)=2011
EjemploSELECT COUNT(*) AS 'Empleados'FROM EmpleadosWHERE DATEPART(YY,FecContrata)=2014
1.3.2.1.2. Uso de la función AVGSELECT AVG(PRECIOUNIDAD) AS 'PRECIO PROMEDIO'FROM COMPRAS.PRODUCTOS
EjemploSELECT AVG(Cantidad) AS 'PRECIO PROMEDIO'FROM PedidosDeta
1.3.2.1.3. Uso de la función MAX() y MIN()SELECT MAX(PRECIOUNIDAD) AS 'MAYOR PRECIO', MIN(PRECIOUNIDAD)AS 'MENOR PRECIO'FROM COMPRAS.PRODUCTOS
EjemploSELECT MAX(Cantidad) AS 'MAYOR PRECIO', MIN(Cantidad)AS 'MENOR PRECIO'FROM PedidosDeta
1.3.2.1.4. Uso de la función SUMSELECT SUM(PRECIOUNIDAD*CANTIDAD) AS 'SUMA'FROM VENTAS.PEDIDOSDETA PD JOIN VENTAS.PEDIDOSCABE PCON PD.IDPEDIDO = PC.IDPEDIDOWHERE YEAR(FECHAPEDIDO)=2011
EjemploSELECT SUM(PRECIOUNIDAD*Descuento) AS 'SUMA'FROM PedidosDeta
1.3.2.2. Cláusula GROUP BYSELECT C.NOMCLIENTE AS 'CLIENTE',COUNT(*) AS 'CANTIDAD', SUM(PRECIOUNIDAD*CANTIDAD) AS'SUMA'FROM VENTAS.PEDIDOSDETA PD JOIN VENTAS.PEDIDOSCABE PCON PD.IDPEDIDO = PC.IDPEDIDOJOIN VENTAS.CLIENTES C ON C.IDCLIENTE = PC.IDCLIENTEGROUP BY C.NOMCLIENTE
Ejemplo:Select C.Nomcliente As 'Cliente',Sum(Preciounidad*Cantidad) As 'Suma'from Pedidosdeta Pd Join Pedidoscabe PcOn Pd.Idpedido = Pc.IdpedidoJoin Clientes C On C.Idcliente = Pc.IdclienteWhere Year(Fechapedido)=2016Group By C.Nomcliente
1.3.2.3. Cláusula HAVINGSELECT C.NOMCLIENTE AS 'CLIENTE',SUM(PRECIOUNIDAD*CANTIDAD) AS 'SUMA'FROM VENTAS.PEDIDOSDETA PD JOIN VENTAS.PEDIDOSCABE PCON PD.IDPEDIDO = PC.IDPEDIDOJOIN VENTAS.CLIENTES C ON C.IDCLIENTE = PC.IDCLIENTEGROUP BY C.NOMCLIENTEHAVING SUM(PRECIOUNIDAD*CANTIDAD)>1000
EjemploSelect C.Nomcliente As 'Cliente',Sum(Preciounidad*Cantidad) As 'Suma'From Ventas.Pedidosdeta Pd Join Ventas.Pedidoscabe PcOn Pd.Idpedido = Pc.IdpedidoJoin Ventas.Clientes C On C.Idcliente = Pc.IdclienteWhere Year(Fechapedido)=2015Group By C.NomclienteHaving Sum(Preciounidad*Cantidad)>1000
1.3.3. AGREGAR CONJUNTO DE RESULTADOS: UNIONSELECT NOMPRODUCTO, PRECIOUNIDADFROM COMPRAS.PRODUCTOS
WHERE PRECIOUNIDAD = (SELECT MAX(P.PRECIOUNIDAD)FROM COMPRAS.PRODUCTOS P)UNIONSELECT NOMPRODUCTO, PRECIOUNIDADFROM COMPRAS.PRODUCTOSWHERE PRECIOUNIDAD = (SELECT MIN(P.PRECIOUNIDAD)FROM COMPRAS.PRODUCTOS P)
Ejemplo:Select E.Nomempleado,E.Apeempleado,Count(*) As 'Cantidad'From Empleados E Join Pedidoscabe POn E.Idempleado = P.IdempleadoWhere Year(Fechapedido)=2016Group By E.Nomempleado, E.ApeempleadoUnionSelect E.Nomempleado, E.Apeempleado, 0 As 'Cantidad'From Empleados EWhere E.Idempleado Not In(Select P.Idempleado FromPedidoscabe PWhere Year(Fechapedido)=2016)
1.3.4. RESUMEN DE DATOS: CUBESELECT C.NOMBRECLIENTE AS 'CLIENTE',YEAR(FECHAPEDIDO) AS AÑO,SUM(PRECIOUNIDAD*CANTIDAD) AS 'SUMA'FROM VENTAS.PEDIDOSDETA PD JOIN VENTAS.PEDIDOSCABE PCON PD.IDPEDIDO = PC.IDPEDIDOJOIN VENTAS.CLIENTES C ON C.IDCLIENTE = PC.IDCLIENTEGROUP BY CUBE( C.NOMBRECLIENTE, YEAR(FECHAPEDIDO) )
EjemploSELECT e.NomEmpleado AS 'Empleado',YEAR(FechaEnvio) 'Año'FROM Empleados e JOIN PedidosCabe pdON e.IdEmpleado = pd.IdEmpleadoJOIN Cargos c ON c.IdCargos = e.IdCargoGROUP BY CUBE( e.NomEmpleado, YEAR(FechaEnvio) )
1.3.4.1. Agregar permutaciones múltiples: operador CUBESELECT E.NOMEMPLEADO+','+E.APEEMPLEADO AS 'EMPLEADO',YEAR(P.FECHAPEDIDO) AS 'AÑO',COUNT(*) AS 'CANTIDAD'FROM VENTAS.PEDIDOSCABE P JOIN VENTAS.EMPLEADOS EON P.IDEMPLEADO = E.IDEMPLEADOGROUP BY CUBE( E. NOMEMPLEADO +','+E. APEEMPLEADO,YEAR(P.FECHAPEDIDO))
EjemploSELECT c.NomCliente+','+c.DirCliente AS 'Cliente',YEAR(FechaEnvio) 'Año',COUNT(*) as 'cantidad'FROM Clientes c JOIN PedidosCabe pdON c.IdCliente=pd.IdClienteGROUP BY CUBE( c.NomCliente+','+c.DirCliente, YEAR(FechaEnvio) )
1.3.4.2. RESUMEN DE DATOS: ROLLUPSELECT YEAR(FECHAPEDIDO) AS 'AÑO',COUNT(*) AS 'CANTIDAD'FROM VENTAS.PEDIDOSCABEGROUP BY YEAR(FECHAPEDIDO)WITH ROLLUP
EjemploSelect E.Apeempleado As 'Empleado',Year(P.Fechapedido) As 'Año',Count(*) As 'Cantidad'From Pedidoscabe P Join Empleados EOn P.Idempleado = E.IdempleadoGroup By E.Apeempleado, Year(P.Fechapedido)With Rollup
Conclusion
En este documento se demostró los diferentes tipos de consultas desde la básica hasta consultas a múltiples tablas y así mismo consultas q hacen cálculos, más que nada esto ayuda en aplicaciones para cuando se ejecuten den un resultado final, en los puntos de venta son muy aplicados y un programador se puede evitar de realizar muchas líneas de código cuando se pueden realizar desde la base de datos.