Vous êtes sur la page 1sur 3

--CONSULTAS SQL

-- NRO DE PEDIDOS POR CATEGORIAS


SELECT NombreCategoría,COUNT(p.IdPedido) AS NroPedidos
FROM Pedidos P,[Detalles de pedidos] D,Productos PR,Categorías C
WHERE P.IdPedido=D.IdPedido AND D.IdProducto=PR.IdProducto AND
PR.IdCategoría=C.IdCategoría
GROUP BY NombreCategoría
WITH ROLLUP

--Version2
SELECT NombreCategoría,COUNT(DISTINCT PE.IdPedido) NroPedidos
FROM Categorías C INNER JOIN Productos P
ON C.IdCategoría=P.IdCategoría INNER JOIN [Detalles de pedidos] D
ON D.IdProducto=P.IdProducto INNER JOIN Pedidos PE
on D.IdPedido=PE.IdPedido
GROUP BY NOMBRECATEGORÍA --WITH ROLLUP

SELECT NOMBRECATEGORÍA,COUNT(IDPEDIDO)NroPedidos
FROM
(SELECT NombreCategoría,PE.IdPedido
FROM Categorías C INNER JOIN Productos P
ON C.IdCategoría=P.IdCategoría INNER JOIN [Detalles de pedidos] D
ON D.IdProducto=P.IdProducto INNER JOIN Pedidos PE
on D.IdPedido=PE.IdPedido)T1
GROUP BY NombreCategoría
WITH ROLLUP

--CLIENTES QUE NO COMPRARON EN EL TRIMESTRE 1 2017


SELECT NombreCompañía
FROM Clientes
EXCEPT
SELECT DISTINCT NombreCompañía
FROM Clientes C INNER JOIN PEDIDOS P ON P.IdCliente=C.IdCliente
WHERE YEAR(FECHAPEDIDO)=2017 AND DATEPART(Q,FECHAPEDIDO)=1

--VERSION 2
SELECT Nombrecompañía,t.IdCliente FROM CLIENTES C LEFT JOIN
(SELECT DISTINCT IDCLIENTE FROM PEDIDOS WHERE YEAR(FECHAPEDIDO)=2017
AND DATEPART(Q,FECHAPEDIDO)=1)T ON
C.IDCLIENTE=T.IDCLIENTE
WHERE T.IdCliente IS NULL

--SUBCONSULTA CON NOTEXISTS


/* PARA LOS QUE SI EXISTEN
SELECT NOMBRECOMPAÑÍA FROM Clientes C
WHERE EXISTS(SELECT DISTINCT IDCLIENTE FROM PEDIDOS P
WHERE YEAR(FECHAPEDIDO)=2017 AND DATEPART(Q,FECHAPEDIDO)=1
AND C.IdCliente=P.IdCliente)*/

SELECT NOMBRECOMPAÑÍA FROM Clientes C


WHERE NOT EXISTS(SELECT DISTINCT IDCLIENTE FROM PEDIDOS P
WHERE YEAR(FECHAPEDIDO)=2017 AND DATEPART(Q,FECHAPEDIDO)=1
AND C.IdCliente=P.IdCliente)

--NRO DE PRODUCTOS POR CLIENTES,AÑOS Y MESES MATRICIAL


SELECT NOMBRECOMPAÑÍA,YEAR(FECHAPEDIDO)Años,
ENERO=SUM(CASE WHEN MONTH(FECHAPEDIDO)=1 THEN 1 ELSE 0 END),
FEBRERO=SUM(CASE WHEN MONTH(FECHAPEDIDO)=2 THEN 1 ELSE 0 END),
MARZO=SUM(CASE WHEN MONTH(FECHAPEDIDO)=3 THEN 1 ELSE 0 END),
ABRIL=SUM(CASE WHEN MONTH(FECHAPEDIDO)=4 THEN 1 ELSE 0 END),
MAYO=SUM(CASE WHEN MONTH(FECHAPEDIDO)=5 THEN 1 ELSE 0 END),
JUNIO=SUM(CASE WHEN MONTH(FECHAPEDIDO)=6 THEN 1 ELSE 0 END),
JULIO=SUM(CASE WHEN MONTH(FECHAPEDIDO)=7 THEN 1 ELSE 0 END),
AGOSTO=SUM(CASE WHEN MONTH(FECHAPEDIDO)=8 THEN 1 ELSE 0 END),
SEPTIEMBRE=SUM(CASE WHEN MONTH(FECHAPEDIDO)=9 THEN 1 ELSE 0 END),
OCUTBRE=SUM(CASE WHEN MONTH(FECHAPEDIDO)=10 THEN 1 ELSE 0 END),
NOVIEMBRE=SUM(CASE WHEN MONTH(FECHAPEDIDO)=11 THEN 1 ELSE 0 END),
DICIEMBRE=SUM(CASE WHEN MONTH(FECHAPEDIDO)=12 THEN 1 ELSE 0 END),
COUNT(IDPRODUCTO)NroProductos
FROM [Detalles de pedidos] D INNER JOIN PEDIDOS P
ON D.IDPEDIDO=P.IDPEDIDO INNER JOIN Clientes C
ON P.IdCliente=C.IdCliente
GROUP BY NombreCompañía,YEAR(FECHAPEDIDO)
WITH ROLLUP

--VENTAS POR PAISES Y AÑOS PARA UNA CATEGORÍA


SELECT PAÍS,
AÑO1=SUM(CASE WHEN YEAR(FECHAPEDIDO)=2016 THEN CANTIDAD*D.PrecioUnidad
ELSE 0 END),
AÑO2=SUM(CASE WHEN YEAR(FECHAPEDIDO)=2017 THEN CANTIDAD*D.PrecioUnidad
ELSE 0 END),
AÑO3=SUM(CASE WHEN YEAR(FECHAPEDIDO)=2018 THEN CANTIDAD*D.PrecioUnidad
ELSE 0 END),
AÑO4=SUM(CASE WHEN YEAR(FECHAPEDIDO)=2019 THEN CANTIDAD*D.PrecioUnidad
ELSE 0 END),
AÑO5=SUM(CASE WHEN YEAR(FECHAPEDIDO)=2020 THEN CANTIDAD*D.PrecioUnidad
ELSE 0 END),
TOTAL=SUM(CANTIDAD*D.PRECIOUNIDAD)
FROM CLIENTES C INNER JOIN PEDIDOS P ON C.IDCLIENTE=P.IDCLIENTE
INNER JOIN [Detalles de pedidos]D ON D.IDPEDIDO=P.IDPEDIDO
INNER JOIN PRODUCTOS T ON T.IDPRODUCTO=D.IDPRODUCTO
GROUP BY PAÍS with rollup

--creacion de una vista:consulta sql estatica minuto 50


CREATE VIEW VNTAxPAÍSxAÑOS AS
SELECT PAÍS,
AÑO1=SUM(CASE WHEN YEAR(FECHAPEDIDO)=2016 THEN CANTIDAD*D.PrecioUnidad
ELSE 0 END),
AÑO2=SUM(CASE WHEN YEAR(FECHAPEDIDO)=2017 THEN CANTIDAD*D.PrecioUnidad
ELSE 0 END),
AÑO3=SUM(CASE WHEN YEAR(FECHAPEDIDO)=2018 THEN CANTIDAD*D.PrecioUnidad
ELSE 0 END),
AÑO4=SUM(CASE WHEN YEAR(FECHAPEDIDO)=2019 THEN CANTIDAD*D.PrecioUnidad
ELSE 0 END),
AÑO5=SUM(CASE WHEN YEAR(FECHAPEDIDO)=2020 THEN CANTIDAD*D.PrecioUnidad
ELSE 0 END),
TOTAL=SUM(CANTIDAD*D.PRECIOUNIDAD)
FROM CLIENTES C INNER JOIN PEDIDOS P ON C.IDCLIENTE=P.IDCLIENTE
INNER JOIN [Detalles de pedidos]D ON D.IDPEDIDO=P.IDPEDIDO
INNER JOIN PRODUCTOS T ON T.IDPRODUCTO=D.IDPRODUCTO
GROUP BY PAÍS with rollup

--USO DE LA VISTA
SELECT*FROM VNTAxPAÍSxAÑOS
WHERE PAÍS='Brasil'
--PROCEDIMIENTO ALMACENADO O STORE PROCEDURE
--CONSULTA DINAMICA EN BP: SE PUEDEN AGREGAR PARÁMETROS
ALTER PROC SPVENTAxPAIxA
@A1 INT,@A2 INT,@A3 INT,@A4 INT,@A5 INT AS
SELECT PAÍS,
AÑO1=SUM(CASE WHEN YEAR(FECHAPEDIDO)=@A1 THEN CANTIDAD*D.PrecioUnidad
ELSE 0 END),
AÑO2=SUM(CASE WHEN YEAR(FECHAPEDIDO)=@A2 THEN CANTIDAD*D.PrecioUnidad
ELSE 0 END),
AÑO3=SUM(CASE WHEN YEAR(FECHAPEDIDO)=@A3 THEN CANTIDAD*D.PrecioUnidad
ELSE 0 END),
AÑO4=SUM(CASE WHEN YEAR(FECHAPEDIDO)=@A4 THEN CANTIDAD*D.PrecioUnidad
ELSE 0 END),
AÑO5=SUM(CASE WHEN YEAR(FECHAPEDIDO)=@A5 THEN CANTIDAD*D.PrecioUnidad
ELSE 0 END),
TOTAL=SUM(CASE WHEN YEAR(FECHAPEDIDO)=@A1 OR YEAR(FECHAPEDIDO)=@A2 OR
YEAR(FECHAPEDIDO)=@A3 OR YEAR(FECHAPEDIDO)=@A4 OR YEAR(FECHAPEDIDO)=@A5
THEN CANTIDAD*D.PRECIOUNIDAD ELSE 0 END)
FROM CLIENTES C INNER JOIN PEDIDOS P ON C.IDCLIENTE=P.IDCLIENTE
INNER JOIN [Detalles de pedidos]D ON D.IDPEDIDO=P.IDPEDIDO
INNER JOIN PRODUCTOS T ON T.IDPRODUCTO=D.IDPRODUCTO
GROUP BY PAÍS with rollup

--USO PROCEDIMIENTO
EXEC SPVENTAxPAIxA 2017,2018,2019,2020,2021

Vous aimerez peut-être aussi