-- CLIENTES QUE TENGAN LA LETRA "A" EN SU NOMBRE (COMPAIA)
select * from Clientes
where NombreCompaa like '%a%'
-- CLIENTES QUE TENGAN LA PALABRA "MAR" EN SU NOMBRE
select * from Clientes
where NombreCompaa like '%mar%'
-- CLIENTES QUE TENGAN UNA DETERMINADA LETRA AL INICIO
select* from Clientes
where NombreCompaa like '%Ca'
-- CLIENTES QUE TENGAN UNA DETERMINADA LETRA AL INICIO,
CENTRO O FINAL, Y QUE SEA DE UN DETERMINADO LUGAR
-- O CIUDAD
select* from Clientes
where NombreCompaa like '%a%'
and Pas like 'Espaa'
and Ciudad like 'Madrid'
-- CANTIDAD DE CLIENTES QUE SEA DE UN DETERMINADO PAS
select Count(*) nclientes
from Clientes
where
Pas like 'Espaa'
-- CANTIDAD DE CLIENTES DE BRASIL
select count(*) nclientes
from Clientes
where
Pas like 'Brasil'
-- CANTIDAD DE CLIENTES QUE PERTENEZCAN A PASES EUROPEOS
select count(*) nclientes
from Clientes
where
Pas like 'Espaa' or Pas like 'Portugal' or Pas like 'Austria' or Pas like
'Alemania'
or Pas like 'Suecia' or Pas like 'Inglaterra' or Pas like 'Francia' or Pas like
'Italia'
-- PASES CON CLIENTES REGISTRADOS
select distinct Pas
from Clientes
-- CLIENTES DE PASES EUROPEOS
select count (*) nclientes
from Clientes
where Pas in ('Espaa','Italia','Francia','Blgica','Alemania','Dinamarca',
'Alemania','Suecia','Portugal','Polonia','Noruega','Reino Unido','Finlandia',
'Irlanda','Austria')
-- CLIENTES QUE HAN COMPRADO EN EL AO 98
select distinct NombreCompaa
from Clientes,Pedidos
where [Link]=[Link]
-- QUE PRODUCTOS SE HAN VENDIDO EN EL AO 97
Select NombreProducto
from Productos,[Detalles de pedidos],Pedidos
where [Link]=[Detalles de pedidos].IdProducto
and [Link]=[Detalles de pedidos].IdPedido
and year (FechaPedido)=1997
group by NombreProducto
-- CUANTOS PEDIDOS SE HAN HECHO DE CLIENTES DE ESPAA
select count(IdPedido) npedidos
from Clientes,Pedidos
where [Link]=[Link]
and Pas='Espaa'
-- CUANTOS PRODUCTOS SE HAN COMPRADO POR CLIENTES DE
ALEMANIA
select count(distinct [Detalles de pedidos].IdProducto) NPROD
from Productos,[Detalles de pedidos],Pedidos
where [Link]=[Detalles de pedidos].IdPedido
and [Link]=[Detalles de pedidos].IdPedido
and PasDestinatario like 'Alemania'
-- CUANTAS UNIDADES DE TE SE HAN VENDIDO EN EL AO 96
select count (distinct IdProducto)[unidades en 96]
from Pedidos,[Detalles de pedidos]
where [Link]=[Detalles de pedidos].IdPedido
and year(FechaPedido)=1996
--Consultas condicionales
-- Condicionar filas: WHERE
-- PRODUCTOS VENDIDOS AL CLIENTE ANTONIO MORENO
select IdProducto from Clientes INNER JOIN Pedidos
ON [Link]=[Link]
INNER JOIN [Detalles de pedidos] D ON
[Link]=[Link]
where
NombreCompaa like '%Trujillo%'
GROUP BY IdProducto
--PRODUCTOS NO COMPRADOS POR EL CLIENTE TRUJILLO
-- usando combinacin desde la izquierda
select [Link],[Link] from Productos left join
(select [Link] from Clientes INNER JOIN Pedidos
ON [Link]=[Link]
INNER JOIN [Detalles de pedidos] D ON
[Link]=[Link]
where
NombreCompaa like '%Trujillo%'
GROUP BY [Link] ) t on
[Link]=[Link]
where [Link] is null
--usando la combinacin a la derecha
select [Link],[Link]
from
(select [Link] from Clientes INNER JOIN Pedidos
ON [Link]=[Link]
INNER JOIN [Detalles de pedidos] D ON
[Link]=[Link]
where
NombreCompaa like '%Trujillo%'
GROUP BY [Link] ) t right join
productos on [Link]=[Link]
where [Link] is null
-- condicional columnas: CASE/END
SELECT NombreProducto,
'Tipoproducto'= CASE when preciounidad<20
then 'Barato'
when PrecioUnidad > = 20 and
PrecioUnidad<100 then 'normal'
when PrecioUnidad > = 100 then 'caro'
end
FROM Productos
-- Case: Todos los clientes que pertenecen a europa y america
latina
select NombreCompaa,
'Continente'= case when Pas
IN ('Brasil', 'Venezuela', 'Mxico',
'Argentina','Canad','Estados Unidos') then 'America '
when Pas
IN ('Espaa', 'Francia', 'Italia',
'Austria', 'Alemania','suiza',
'Suecia', 'Reino Unido', 'Noruega',
'Finlandia', 'Portugal', 'Polonia',
'Blgica', 'Irlanda', 'Dinamarca') then 'Europa'end,
Pas from Clientes
--Condicionamiento de grupos: Having
--numero de pedidos por trimestre
-- Reporte de los trimestres q superan n pedidos
select DATEPART(Q,fechapedido)Trimestre,
year(fechapedido)ao,
COUNT(IdPedido) npedidos
from Pedidos Group by
DATEPART(Q,fechapedido),
year(fechapedido)
Having COUNT(IdPedido)>90
--ventas mensuales
select DATENAME(M,fechapedido)Trimestre,
year(fechapedido)ao,
SUM(CANTIDAD*PRECIOUNIDAD) VENTAMES
from Pedidos INNER JOIN [Detalles de pedidos]
D ON [Link]=[Link]
Group by
DATENAME(M,fechapedido),
year(fechapedido)
Having SUM(CANTIDAD*PRECIOUNIDAD)>50000
select * from
(select DATEPART(Q,fechapedido)Trimestre,
year(fechapedido)ao,
COUNT(IdPedido) npedidos
from Pedidos Group by
DATEPART(Q,fechapedido),
year(fechapedido)) t
where npedidos>90
--Consultas de la Practica
--Numero de Productos vendidos en el semestre 2 del ao 97
Select COUNT(Distinct IdProducto) nProductos
From Pedidos P, [Detalles de pedidos] D
Where [Link]=[Link] and YEAR(FechaPedido)=1997
and (DATEPART(Q,FechaPedido)=3 or DATEPART(Q,FechaPedido)=4)
--Otra Forma
Select COUNT(Distinct IdProducto) nProductos
From Pedidos P, [Detalles de pedidos] D
Where [Link]=[Link] and YEAR(FechaPedido)=1997
and (DATEPART(Q,FechaPedido)+1)/2=2
--Otra Forma
Select COUNT(Distinct IdProducto) nProductos
From Pedidos P INNER JOIN [Detalles de pedidos] D
on [Link]=[Link] WHERE YEAR(FechaPedido)=1997
and (DATEPART(Q,FechaPedido)+1)/2=2
--UNIDADES VENDIDAS DE PRODUCTOS AO 96 Y 98
Select NombreProducto, CantidadPorUnidad, SUM (Cantidad) Unidades
From Pedidos P INNER JOIN [Detalles de pedidos] D
on [Link]=[Link] INNER JOIN
Productos T ON [Link]=[Link]
WHERE YEAR(FechaPedido)=1996
or YEAR(FechaPedido)=1998
Group By NombreProducto, CantidadPorUnidad
--Numero de Pedidos por Pais >
5 000
Select Pas, COUNT(IdPedido) nPedidos
FROM
(Select Pas, [Link], SUM(Cantidad*PrecioUnidad) Importe
From Pedidos P, [Detalles de pedidos] D,Clientes C
Where [Link]=[Link] and [Link]=[Link]
Group By Pas, [Link]
HAVING SUM(Cantidad*PrecioUnidad)> 5000) T
GROUP BY Pas
--OTRA VERSION
Select Pas, COUNT(IdPedido) nPedidos
FROM
(Select Pas, [Link], SUM(Cantidad*PrecioUnidad) Importe
From Pedidos P, [Detalles de pedidos] D,Clientes C
Where [Link]=[Link] and [Link]=[Link]
Group By Pas, [Link]
)T
WHERE Importe> 5000
GROUP BY Pas
--PRODUCTOS NO VENDIDOS EN JULIO 1997
Select IdProducto, NombreProducto
FROM Productos
except
Select Distinct [Link], NombreProducto
FROM [Detalles de pedidos] D, Productos P, Pedidos E
WHERE [Link]=[Link] and
[Link]=[Link]
and YEAR(FechaPedido)=1997 and
MONTH(FechaPedido)=7
--OTRA VERSION
Select NombreProducto
FROM (Select Distinct IdProducto
FROM Pedidos E INNER JOIN [Detalles de pedidos] D
ON [Link]=[Link]
WHERE YEAR(FechaPedido)=1997 and
MONTH(FechaPedido)=7) T
Right Join Productos P
ON [Link]=[Link]
where [Link] is null
--EJEMPLOS DE VISTAS Y PROCEDIMIENTOS
--VISTAS:
--1 VENTAS BIMESTRALES
Create view Ventas_Bimestrales as
Select YEAR(FechaPedido) Ao,
(DATEPART(M,FechaPedido)+1)/2 Bimestre,
SUM (Cantidad*PrecioUnidad) Ventas
FROM Pedidos P
INNER JOIN [Detalles de pedidos] D
ON [Link]=[Link]
GROUP BY YEAR(FechaPedido),
(DATEPART(M,FechaPedido)+1)/2
--USO DE LA VISTA:
Select* FROM Ventas_Bimestrales
--2 VENTAS QUINCENALES Y SEMANALES
Create view Ventas_Quincenales as
Select YEAR(FechaPedido) Ao,
(DATEPART(WW,FechaPedido)+1)/2 Quincena,
SUM (Cantidad*PrecioUnidad) Ventas
FROM Pedidos P
INNER JOIN [Detalles de pedidos] D
ON [Link]=[Link]
GROUP BY YEAR(FechaPedido),
(DATEPART(WW,FechaPedido)+1)/2
--USO DE LA VISTA:
Select * FROM Ventas_Quincenales
ORDER BY Ao,Quincena
--3 VENTAS CADA 20 DIAS
Create view Ventas_C20Dias as
Select YEAR(FechaPedido) Ao,
(DATEPART(Y,FechaPedido)+19)/20 C20Dias,
SUM (Cantidad*PrecioUnidad) Ventas
FROM Pedidos P
INNER JOIN [Detalles de pedidos] D
ON [Link]=[Link]
GROUP BY YEAR(FechaPedido),
(DATEPART(Y,FechaPedido)+19)/20
--USO DE LA VISTA:
Select * FROM Ventas_C20Dias
--PROCEDIMIENTOS
--1 VENTAS BIMESTRALESxAO
Create Proc Sp_Ventas_Bimestrales
@Ao int=1996
as
Select YEAR(FechaPedido) Ao,
(DATEPART(M,FechaPedido)+1)/2 Bimestre,
SUM (Cantidad*PrecioUnidad) Ventas
FROM Pedidos P
INNER JOIN [Detalles de pedidos] D
ON [Link]=[Link]
WHERE YEAR(FechaPedido)= @Ao
GROUP BY YEAR(FechaPedido),
(DATEPART(M,FechaPedido)+1)/2
--USO DE PROCEDIMIENTO:
Sp_Ventas_Bimestrales 1998
--CON DOS PARAMETROS:
ALTER Proc Sp_Ventas_Bimestrales2
@Ao int=1996, @Bimestre int=null
as
IF @Bimestre is not null
Begin
Select YEAR(FechaPedido) Ao,
(DATEPART(M,FechaPedido)+1)/2 Bimestre,
SUM (Cantidad*PrecioUnidad) Ventas
FROM Pedidos P
INNER JOIN [Detalles de pedidos] D
ON [Link]=[Link]
WHERE YEAR(FechaPedido)= @Ao and
(DATEPART(M,FechaPedido)+1)/2= @Bimestre
GROUP BY YEAR(FechaPedido),
(DATEPART(M,FechaPedido)+1)/2
end
ELSE
Begin
Select YEAR(FechaPedido) Ao,
(DATEPART(M,FechaPedido)+1)/2 Bimestre,
SUM (Cantidad*PrecioUnidad) Ventas
FROM Pedidos P
INNER JOIN [Detalles de pedidos] D
ON [Link]=[Link]
WHERE YEAR(FechaPedido)= @Ao
GROUP BY YEAR(FechaPedido),
(DATEPART(M,FechaPedido)+1)/2
END
--USO DE PROCEDIMIENTO:
Sp_Ventas_Bimestrales2 1997,4
--CON TRES PARAMETROS
Create Proc Sp_Ventas_Bimestrales3
@Ao int=1996, @Bimestre int=null,
@CodCliente nVarchar(5)=null
as
IF @Bimestre is not null and @CodCliente is null
Begin
Select YEAR(FechaPedido) Ao,
(DATEPART(M,FechaPedido)+1)/2 Bimestre,
SUM (Cantidad*PrecioUnidad) Ventas
FROM Pedidos P
INNER JOIN [Detalles de pedidos] D
ON [Link]=[Link]
WHERE YEAR(FechaPedido)= @Ao and
(DATEPART(M,FechaPedido)+1)/2= @Bimestre
GROUP BY YEAR(FechaPedido),
(DATEPART(M,FechaPedido)+1)/2
end
ELSE
IF @CodCliente is null and @Ao is not null
Begin
Select YEAR(FechaPedido) Ao,
(DATEPART(M,FechaPedido)+1)/2 Bimestre,
SUM (Cantidad*PrecioUnidad) Ventas
FROM Pedidos P
INNER JOIN [Detalles de pedidos] D
ON [Link]=[Link]
WHERE YEAR(FechaPedido)= @Ao
GROUP BY YEAR(FechaPedido),
(DATEPART(M,FechaPedido)+1)/2
END
ELSE
BEGIN
Select YEAR(FechaPedido) Ao,
(DATEPART(M,FechaPedido)+1)/2 Bimestre,
SUM (Cantidad*PrecioUnidad) Ventas
FROM Pedidos P
INNER JOIN [Detalles de pedidos] D
ON [Link]=[Link]
WHERE YEAR(FechaPedido)= @Ao
and IdCliente=@CodCliente
GROUP BY YEAR(FechaPedido),
(DATEPART(M,FechaPedido)+1)/2
END
--USO DE PROCEDIMIENTO:
Sp_Ventas_Bimestrales3 1997, 0,'ANATR'