0% encontró este documento útil (0 votos)
15 vistas4 páginas

Consultas SQL para Análisis de Ventas

El documento describe diferentes consultas SQL que utilizan condicionales y agrupaciones para resumir y filtrar datos de una base de datos de ventas. Incluye ejemplos de condicionales WHERE, JOIN, GROUP BY, HAVING, CASE y la creación de vistas y procedimientos almacenados.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
15 vistas4 páginas

Consultas SQL para Análisis de Ventas

El documento describe diferentes consultas SQL que utilizan condicionales y agrupaciones para resumir y filtrar datos de una base de datos de ventas. Incluye ejemplos de condicionales WHERE, JOIN, GROUP BY, HAVING, CASE y la creación de vistas y procedimientos almacenados.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

--CONSULTAS CONDICIONALES

-- CONDICIONALES DE FILAS - WHERE [COND]


--1 CLIENTES DE ARGENTINA O VENEZUELA.
SELECT NombreCompañía
FROM Clientes WHERE País='ARGENTINA' OR
País='VENEZUELA'

--2 PRODUCTOS VENDIDOS EN EL BIMESTRE 2 DEL 97


SELECT DISTINCT NombreProducto
FROM Productos P INNER JOIN
[Detalles de pedidos] D
ON [Link]=[Link] INNER JOIN
Pedidos T ON [Link]=[Link]
WHERE YEAR(FECHAPEDIDO)=1997 AND
(DATEPART(M,FECHAPEDIDO)+1)/2=2

--3. CLIENTES DE LOS PAISES ANDINOS


SELECT NombreCompañía
FROM Clientes
WHERE País IN ('VENEZUELA','COLOMBIA',
'ECUADOR','PERú','BOLIVIA')

--2 CONDICIONAMIENTO DE GRUPO: UNION DE FILAS


-- NRO DE PEDIDOS POR PAIS >50
SELECT País, COUNT(IDPEDIDO) NPEDIDOS
FROM CLIENTES C INNER JOIN Pedidos P
ON [Link]=[Link]
GROUP BY País HAVING COUNT(IDPEDIDO) >50

-- PAISES CON VENTAS >100000 UM


SELECT País, SUM(CANTIDAD*PRECIOUNIDAD) VENTAS
FROM CLIENTES C INNER JOIN Pedidos P
ON [Link]=[Link] INNER JOIN
[Detalles de pedidos] D
ON [Link]=[Link]
GROUP BY País
HAVING SUM(CANTIDAD*PRECIOUNIDAD) >100000

--CONDICIONAMIENTO DE COLUMNAS.
-- CASE WHEN THEN ELSE END

-- CLASIFICAR A EMPLEADOS EN BASE A NRO PEDIDOS


-- SI >100 SON 'B', SI <20 ES 'M' CASO CONTRARIO 'R'
SELECT Apellidos+' '+Nombre EMPLEADO,
TIPOEMP=CASE WHEN COUNT(IDPEDIDO)>100
THEN 'B' WHEN COUNT(IDPEDIDO)<45 THEN 'M'
ELSE 'R' END,
COUNT(IDPEDIDO) NPEDIDOS
FROM EMPLEADOS E INNER JOIN Pedidos P
ON [Link]=[Link]
GROUP BY Apellidos+' '+Nombre
ORDER BY TIPOEMP

-- VENTAS POR PAISES POR AÑOS MATRICIAL


SELECT País,
AÑO1=SUM(CASE WHEN YEAR(FECHAPEDIDO)=1996
THEN CANTIDAD*PRECIOUNIDAD ELSE 0 END),
AÑO2=SUM(CASE WHEN YEAR(FECHAPEDIDO)=1997
THEN CANTIDAD*PRECIOUNIDAD ELSE 0 END),
AÑO3=SUM(CASE WHEN YEAR(FECHAPEDIDO)=1998
THEN CANTIDAD*PRECIOUNIDAD ELSE 0 END),
AÑO4=SUM(CASE WHEN YEAR(FECHAPEDIDO)=1999
THEN CANTIDAD*PRECIOUNIDAD ELSE 0 END),
AÑO5=SUM(CASE WHEN YEAR(FECHAPEDIDO)=2000
THEN CANTIDAD*PRECIOUNIDAD ELSE 0 END),
SUM(CANTIDAD*PRECIOUNIDAD) VENTAS
FROM CLIENTES C INNER JOIN Pedidos P
ON [Link]=[Link] INNER JOIN
[Detalles de pedidos] D
ON [Link]=[Link]
GROUP BY País WITH ROLLUP

-- 1. PRODUCTOS VENDIDOS EL AGOSTO DEL 97


SELECT DISTINCT NombreProducto
FROM Productos p INNER JOIN
[Detalles de pedidos] D ON [Link]=[Link]
INNER JOIN Pedidos T ON [Link]=[Link]
WHERE YEAR(FECHAPEDIDO)=1997 AND
MONTH(FECHAPEDIDO)=8

-- 2. VENTAS POR CATEGORIAS DE PROD PARA


-- IMPORTES >500
SELECT NombreCategoría,
SUM(VENTAS) TVENTAS FROM
(SELECT NombreCategoría,IDPEDIDO,[Link],
SUM(CANTIDAD*[Link]) VENTAS
FROM Productos p INNER JOIN
[Detalles de pedidos] D ON [Link]=[Link]
INNER JOIN Categorías T ON [Link]ía=[Link]ía
GROUP BY NombreCategoría,IDPEDIDO,[Link]
HAVING SUM(CANTIDAD*[Link]) >500) T
GROUP BY NombreCategoría WITH ROLLUP
-- 3. VENTAS POR AÑO Y BIMESTRE MATRICIAL
SELECT YEAR(FECHAPEDIDO) AÑO,
BIM1=SUM(CASE WHEN (DATEPART(M,FECHAPEDIDO)+1)/2=1
THEN CANTIDAD*[Link] ELSE 0 END),
BIM2=SUM(CASE WHEN (DATEPART(M,FECHAPEDIDO)+1)/2=2
THEN CANTIDAD*[Link] ELSE 0 END),
BIM3=SUM(CASE WHEN (DATEPART(M,FECHAPEDIDO)+1)/2=3
THEN CANTIDAD*[Link] ELSE 0 END),
BIM4=SUM(CASE WHEN (DATEPART(M,FECHAPEDIDO)+1)/2=4
THEN CANTIDAD*[Link] ELSE 0 END),
BIM5=SUM(CASE WHEN (DATEPART(M,FECHAPEDIDO)+1)/2=5
THEN CANTIDAD*[Link] ELSE 0 END),
BIM6=SUM(CASE WHEN (DATEPART(M,FECHAPEDIDO)+1)/2=6
THEN CANTIDAD*[Link] ELSE 0 END),
SUM(CANTIDAD*[Link]) VENTAS
FROM Productos p INNER JOIN
[Detalles de pedidos] D ON [Link]=[Link]
INNER JOIN Pedidos T ON [Link]=[Link]
GROUP BY YEAR(FECHAPEDIDO) WITH ROLLUP

-- CREAR VISTAS O PROCEDIMIENTOS


-- CREAR VISTA
CREATE VIEW VTASXAXB
AS
SELECT YEAR(FECHAPEDIDO) AÑO,
BIM1=SUM(CASE WHEN (DATEPART(M,FECHAPEDIDO)+1)/2=1
THEN CANTIDAD*[Link] ELSE 0 END),
BIM2=SUM(CASE WHEN (DATEPART(M,FECHAPEDIDO)+1)/2=2
THEN CANTIDAD*[Link] ELSE 0 END),
BIM3=SUM(CASE WHEN (DATEPART(M,FECHAPEDIDO)+1)/2=3
THEN CANTIDAD*[Link] ELSE 0 END),
BIM4=SUM(CASE WHEN (DATEPART(M,FECHAPEDIDO)+1)/2=4
THEN CANTIDAD*[Link] ELSE 0 END),
BIM5=SUM(CASE WHEN (DATEPART(M,FECHAPEDIDO)+1)/2=5
THEN CANTIDAD*[Link] ELSE 0 END),
BIM6=SUM(CASE WHEN (DATEPART(M,FECHAPEDIDO)+1)/2=6
THEN CANTIDAD*[Link] ELSE 0 END),
SUM(CANTIDAD*[Link]) VENTAS
FROM Productos p INNER JOIN
[Detalles de pedidos] D ON [Link]=[Link]
INNER JOIN Pedidos T ON [Link]=[Link]
GROUP BY YEAR(FECHAPEDIDO) WITH ROLLUP
--USAR VISTA BD
SELECT * FROM VTASXAXB
--MODIFICAR VTA
ALTER VIEW VTASXAXB
AS
SELECT YEAR(FECHAPEDIDO) AÑOS,
BIM1=SUM(CASE WHEN (DATEPART(M,FECHAPEDIDO)+1)/2=1
THEN CANTIDAD*[Link] ELSE 0 END),
BIM2=SUM(CASE WHEN (DATEPART(M,FECHAPEDIDO)+1)/2=2
THEN CANTIDAD*[Link] ELSE 0 END),
BIM3=SUM(CASE WHEN (DATEPART(M,FECHAPEDIDO)+1)/2=3
THEN CANTIDAD*[Link] ELSE 0 END),
BIM4=SUM(CASE WHEN (DATEPART(M,FECHAPEDIDO)+1)/2=4
THEN CANTIDAD*[Link] ELSE 0 END),
BIM5=SUM(CASE WHEN (DATEPART(M,FECHAPEDIDO)+1)/2=5
THEN CANTIDAD*[Link] ELSE 0 END),
BIM6=SUM(CASE WHEN (DATEPART(M,FECHAPEDIDO)+1)/2=6
THEN CANTIDAD*[Link] ELSE 0 END),
SUM(CANTIDAD*[Link]) TVENTAS
FROM Productos p INNER JOIN
[Detalles de pedidos] D ON [Link]=[Link]
INNER JOIN Pedidos T ON [Link]=[Link]
GROUP BY YEAR(FECHAPEDIDO) WITH ROLLUP

--CREA PROCEDIMIENTO ALMACENADO STORE PROCEDURE


CREATE PROC P_VTASXBXAE
@AÑO INT=NULL , @NOMPROD VARCHAR(25)=NULL
AS
SELECT YEAR(FECHAPEDIDO) AÑOS,
BIM1=SUM(CASE WHEN (DATEPART(M,FECHAPEDIDO)+1)/2=1
THEN CANTIDAD*[Link] ELSE 0 END),
BIM2=SUM(CASE WHEN (DATEPART(M,FECHAPEDIDO)+1)/2=2
THEN CANTIDAD*[Link] ELSE 0 END),
BIM3=SUM(CASE WHEN (DATEPART(M,FECHAPEDIDO)+1)/2=3
THEN CANTIDAD*[Link] ELSE 0 END),
BIM4=SUM(CASE WHEN (DATEPART(M,FECHAPEDIDO)+1)/2=4
THEN CANTIDAD*[Link] ELSE 0 END),
BIM5=SUM(CASE WHEN (DATEPART(M,FECHAPEDIDO)+1)/2=5
THEN CANTIDAD*[Link] ELSE 0 END),
BIM6=SUM(CASE WHEN (DATEPART(M,FECHAPEDIDO)+1)/2=6
THEN CANTIDAD*[Link] ELSE 0 END),
SUM(CANTIDAD*[Link]) TVENTAS
FROM Productos p INNER JOIN
[Detalles de pedidos] D ON [Link]=[Link]
INNER JOIN Pedidos T ON [Link]=[Link]
WHERE YEAR(FECHAPEDIDO)= @AÑO OR YEAR(FECHAPEDIDO)= @AÑO-1
AND NombreProducto LIKE @NOMPROD
GROUP BY YEAR(FECHAPEDIDO) WITH ROLLUP

--USAR PROCEDIMIENTO
EXEC P_VTASXBXAE 1997,'TE%'
P_VTASXBXAE 1997,'TE%'

También podría gustarte