Está en la página 1de 33

---1.1.

- NUMERO DE PEDIDOS BIMESTRALES MAYORES A DOS


SELECT YEAR(FechaPedido)AO,CEILING((DATEPART(M,FechaPedido)+1)/2)BIMESTRE,
COUNT (IdPedido)NPEDIDOS
FROM Pedidos
GROUP BY CEILING((DATEPART(M,FechaPedido)+1)/2),YEAR(FechaPedido)
HAVING COUNT(IdPedido)>2

---1.2.- NUMERO DE PEDIDOS TRIMESTRALES CUYO IMPORTE DE PEDIDO SE


MAYORE A 100
SELECT
YEAR(FechaPedido)AO,DATEPART(Q,FechaPedido)TRIMESTRE,SUM(Cantidad*D.PrecioUn
idad)IMPORTE
FROM Pedidos,[Detalles de pedidos]D
WHERE D.IdPedido=Pedidos.IdPedido
GROUP BY YEAR(FechaPedido),DATEPART(Q,FechaPedido)
HAVING SUM(Cantidad*D.PrecioUnidad)>100

---1.3.- NUMERO DE PRODUCTOS POR CADA PEDIDO


SELECT Pedidos.IdPedido, SUM(1) NPRODUCTOS,YEAR(FechaPedido)ao
FROM [Detalles de pedidos], Productos, Pedidos
WHERE [Detalles de pedidos].IdPedido=Pedidos.IdPedido
AND Productos.IdProducto=[Detalles de pedidos].IdProducto and YEAR(FechaPedido)=1998
group by Pedidos.IdPedido,YEAR(FechaPedido)

----1.4.- NUMERO DE COMPRAS DE CADA CLIENTE X AO

SELECT NombreCompaa,
'1996'= SUM(CASE WHEN YEAR(FechaPedido)=1996 THEN 1 ELSE 0 END),
'1997'= SUM(CASE WHEN YEAR(FechaPedido)=1997 THEN 1 ELSE 0 END),
'1998'= SUM(CASE WHEN YEAR(FechaPedido)=1998 THEN 1 ELSE 0 END)
FROM Clientes,Pedidos
WHERE Pedidos.IdCliente=Clientes.IdCliente
GROUP BY NombreCompaa

SELECT NombreCompaa,COUNT(IdPedido)NCOMPRAS, YEAR(FechaPedido)AO


FROM Clientes,Pedidos
WHERE Pedidos.IdCliente=Clientes.IdCliente
GROUP BY NombreCompaa,YEAR(FechaPedido)

--1.5.- UNIDAS DE PRODUCTOS VENDIDAS POR TRIMESTRE


SELECT NombreProducto,YEAR(FechaPedido)AO,DATEPART(Q,FechaPedido)TRIMESTRE,
SUM(CANTIDAD)UNIDAD, COUNT(DISTINCT Pedidos.IdPedido)NPE
FROM Productos,Pedidos,[Detalles de pedidos]D
WHERE Productos.IdProducto=D.IdProducto AND Pedidos.IdPedido=D.IdPedido
GROUP BY NombreProducto,DATEPART(Q,FechaPedido),YEAR(FechaPedido)
ORDER BY YEAR(FechaPedido)

--1.6.- NUMERO DE PRODUCTOS VENDIDOS EN ENERO Y FEBRERO DE 1998


SELECT NombreProducto,
'ENERO'= SUM(CASE WHEN MONTH(FechaPedido)=1 THEN CANTIDAD ELSE 0 END),
'FEBRERO'= SUM(CASE WHEN MONTH(FechaPedido)=2 THEN CANTIDAD ELSE 0 END)
--1. CLIENTES y cantidad POR EL SERVICIO DE SECADO
POR MES
SELECT
NOMCLIENTE,YEAR(FECHA)AO,sum(CANTIDAD)CANTIDAD,DAT
EPART(M,FECHA)MES
FROM CLIENTE,DETALLE_PEDIDOS,PEDIDO
WHERE DETALLE_PEDIDOS.IDPEDIDO=PEDIDO.IDPEDIDO AND
CLIENTE.IDCLIENTE=PEDIDO.IDCLIENTE
AND IDSERVICIO=2
GROUP BY NOMCLIENTE,DATEPART(M,FECHA),YEAR(FECHA)

--2. CLIENTES Y LA CANTIDAD DE SERVICIOS POR PEDIDO


SELECT
NOMCLIENTE,YEAR(FECHA)AO,MONTH(FECHA)MES,PEDIDO.ID
PEDIDO,COUNT(IDSERVICIO)CANTIDAD_SERV
FROM DETALLE_PEDIDOS,PEDIDO,CLIENTE
WHERE CLIENTE.IDCLIENTE=PEDIDO.IDCLIENTE AND
PEDIDO.IDPEDIDO=DETALLE_PEDIDOS.IDPEDIDO
GROUP BY
PEDIDO.IDCLIENTE,NOMCLIENTE,PEDIDO.IDPEDIDO,YEAR(FE
CHA),MONTH(FECHA)

--3. SE DESE SABER LOS INGRESOS TOTALES POR CADA


SERVICIO HASTA LA FECHA
SELECT NOMSERVICIO,SERVICIO.NOMSERVICIO,
SUM(CANTIDAD)CANTIDAD,
SUM(TARIFAXUNIDAD*CANTIDAD)INGRESO,
COUNT(DETALLE_PEDIDOS.IDSERVICIO)SERVICIOS
FROM SERVICIO,DETALLE_PEDIDOS
WHERE
SERVICIO.IDSERVICIO=DETALLE_PEDIDOS.IDSERVICIO
GROUP BY NOMSERVICIO,DETALLE_PEDIDOS.IDSERVICIO

-- 4. SE DESEA SABER LOS INGRESOS MENSUALES AO


2012
CONDICION CLAUSULA
FILAS WHERE
COLUMNAS CASE/END
GRUPOS HAVING

-- numero de pedidos por cada producto


select NombreProducto,Sum (1) NPEDIDOs
from [Detalles de pedidos]D, Productos
where D.IdProducto=Productos.IdProducto
group by NombreProducto
----
-- numero de pedidos por cada producto
select [NombreProducto],Sum (1) NPEDIDOs
from [Detalles]D INNER JOIN Productos
ON D.[IdProducto]=Productos.[IdProducto]
group by [NombreProducto] WITH ROLLUP

-- numero de pedidos por cada producto con totales


SELECT CASE WHEN NombreProducto IS NULL
THEN 'TOTALES' ELSE NombreProducto END, NPEDIDOS FROM
(select [NombreProducto],Sum (1) NPEDIDOs
from [Detalles de pedido]D INNER JOIN Productos
ON D.[IdProducto]=Productos.[IdProducto]
group by [NombreProducto] WITH ROLLUP)T

--VENTAS ANUALES POR PRODUCTO


SELECT NombreProducto,YEAR(FECHAPEDIDO) AO,
Sum (Cantidad*D.PrecioUnidad) VENTAS
FROM [Detalles de pedidos]D, Productos,Pedidos
WHERE D.IdProducto=Productos.IdProducto AND
D.IdPedido=Pedidos.IdPedido
GROUP by NombreProducto, YEAR(FECHAPEDIDO)
ORDER by NombreProducto, YEAR(FECHAPEDIDO)

--VENTAS TRIMESTRALES POR PRODUCTO


SELECT NombreProducto,YEAR(FECHAPEDIDO) AO,
DATEPART (Q,FECHAPEDIDO) TRIMESTRE,
Sum (Cantidad*D.PrecioUnidad) VENTAS
FROM [Detalles de pedidos]D, Productos,Pedidos
WHERE D.IdProducto=Productos.IdProducto AND
D.IdPedido=Pedidos.IdPedido
GROUP by NombreProducto, YEAR(FECHAPEDIDO), DATEPART (Q,FECHAPEDIDO)
ORDER by NombreProducto, YEAR(FECHAPEDIDO), DATEPART (Q,FECHAPEDIDO)

--VENTAS BIMESTRALES POR PRODUCTO


SELECT NombreProducto,YEAR(FECHAPEDIDO) AO,
ROUND (DATEPART (M,FECHAPEDIDO)/2,0) BIMESTRE,
Sum (Cantidad*D.PrecioUnidad) VENTAS
FROM [Detalles de pedidos]D, Productos,Pedidos
WHERE D.IdProducto=Productos.IdProducto AND
--VENTAS POR PRODUCTO

SELECT IdProducto,YEAR(FECHAPEDIDO) AS AO,

SUM(CANTIDAD*PRECIOUNIDAD)

AS VENTAS

FROM [Detalles de pedidos] AS D,Pedidos AS P

WHERE D.IdPedido=P.IdPedido AND IdProducto

<>20 AND IdProducto <> 6

GROUP BY IdProducto ,YEAR(FECHAPEDIDO)

--VENTAS EXCLUYENDO MERMELADAS

--FILTRANDO GROUP<= 10000

SELECT IdProducto,CASE WHEN PrecioUnidad

<100 THEN 'B' ELSE 'C' END AS TIPO,

SUM(CANTIDAD*PRECIOUNIDAD)

AS VENTAS

FROM [Detalles de pedidos] AS D,Pedidos AS P

WHERE D.IdPedido=P.IdPedido AND IdProducto

<>20 AND IdProducto <> 6

GROUP BY IdProducto HAVING

SUM(CANTIDAD*PRECIOUNIDAD)>10000 AND

SUM(CANTIDAD*PRECIOUNIDAD)< 20000

SELECT IdProducto,CASE WHEN PrecioUnidad

<100 THEN 'B' ELSE 'C' END AS TIPO,

SUM(CANTIDAD*PRECIOUNIDAD)

AS VENTAS

FROM [Detalles de pedidos] AS D,Pedidos AS P

WHERE D.IdPedido=P.IdPedido AND IdProducto

<>20 AND IdProducto <> 6

GROUP BY IdProducto TIPO

-- ENLACE CON TABLAS CON JOIN + INNER/LEFT/RIGHT


SELECT IdProducto,

SUM(CANTIDAD*PRECIOUNIDAD)

AS VENTAS

FROM [Detalles de pedidos] AS D INNER JOIN

Pedidos AS P ON D.IdPedido=P.IdPedido

WHERE YEAR(FechaPedido)=1997

GROUP BY IdProducto

SELECT T.IdProducto,D.IdProducto,

FROM PRODUCTOS AS T LEFT JOIN[Detalles de pedidos] AS D ON T.

INNER JOIN

Pedidos AS P ON D.IdPedido=P.IdPedido

WHERE YEAR(FechaPedido)=1997

GROUP BY IdProducto

-- PRODUCTOS VENDIDOS EN EL AO 1996

SELECT T.IdProducto,D.IdProducto

FROM PRODUCTOS AS T LEFT JOIN([Detalles de pedidos] AS D INNER JOIN Pedidos AS P ON


D.IdPedido=P.IdPedido) ON

T.IdProducto=D.IdProducto

WHERE YEAR(FechaPedido)=1996

GROUP BY T.IdProducto,D.IdProducto;

-- PRODUCTOS NO VENDIDIOS EN EL AO 1996

SELECT T.NombreProducto

FROM Productos T LEFT JOIN

(SELECT D.IdProducto

FROM (Pedidos P INNER JOIN [Detalles de pedidos] D


ON D.IdPedido=P.IdPedido)

WHERE YEAR(FechaPedido)=1996

GROUP BY D.IdProducto) T1 ON

T.IdProducto=T1.IdProducto

WHERE T1.IdProducto IS NULL

-- USO DE RIGHT JOIN

SELECT T.NombreProducto

FROM

FROM Productos T LEFT JOIN

(SELECT D.IdProducto

FROM (Pedidos P INNER JOIN [Detalles de pedidos] D

ON D.IdPedido=P.IdPedido)

WHERE YEAR(FechaPedido)=1996

GROUP BY D.IdProducto) T1

RIGHT JOIN Productos T ON T.IdProducto=T1.IdProducto

WHERE T1.IdProducto IS NULL

SELECT T.IdProducto,

SUM(CANTIDAD*PRECIOUNIDAD) AS VENTAS

FROM Productos T LEFT JOIN

FROM (Pedidos P INNER JOIN [Detalles de pedidos] D

ON D.IdPedido=P.IdPedido)

GROUP BY D.IdProducto)

-- VENTAS POR AO CON TOTAL FINAL

SELECT 'Total' AS AO,

SUM(CANTIDAD*PRECIOUNIDAD) AS VENTAS

FROM (Pedidos P INNER JOIN [Detalles de pedidos] D

ON D.IdPedido=P.IdPedido)
--VENTAS TOTALES

SELECT SUM(CANTIDAD*PRECIOUNIDAD) AS VENTAS

FROM [DETALLES DE PEDIDOS] AS D

--VENTAS POR PRODUCTO

SELECT IDPRODUCTO,

SUM(CANTIDAD*PRECIOUNIDAD) AS VENTAS

FROM [DETALLES DE PEDIDOS] AS D

GROUP BY IDPRODUCTO

--VENTAS POR PRODUCTO Y AO

SELECT IDPRODUCTO, YEAR(FECHAPEDIDO) AS AO,

SUM(CANTIDAD*PRECIOUNIDAD) AS VENTAS

FROM [DETALLES DE PEDIDOS] AS D,PEDIDOS AS P

WHERE D.IDPEDIDO=P.IDPEDIDO

GROUP BY IDPRODUCTO,YEAR(FECHAPEDIDO)

--MOSTRAR SOLO UN TIPO DE PRODUCTO

SELECT IDPRODUCTO, YEAR(FECHAPEDIDO) AS AO,

SUM(CANTIDAD*PRECIOUNIDAD) AS VENTAS

FROM [DETALLES DE PEDIDOS] AS D,PEDIDOS AS P

WHERE D.IDPEDIDO=P.IDPEDIDO AND IDPRODUCTO

=20

GROUP BY IDPRODUCTO,YEAR(FECHAPEDIDO)

--CONDICIONAMIENTO POR FILAS

SELECT IDPRODUCTO, YEAR(FECHAPEDIDO) AS AO,

SUM(CANTIDAD*PRECIOUNIDAD) AS VENTAS

FROM [DETALLES DE PEDIDOS] AS D,PEDIDOS AS P

WHERE D.IDPEDIDO=P.IDPEDIDO AND IDPRODUCTO


<>20 AND IDPRODUCTO <>6

GROUP BY IDPRODUCTO,YEAR(FECHAPEDIDO)

--CONDICIONAMIENTO POR FILAS SIN AO (VENTAS EXCLUYENDO MERMELADAS COD 20 Y 6)

SELECT IDPRODUCTO,

SUM(CANTIDAD*PRECIOUNIDAD) AS VENTAS

FROM [DETALLES DE PEDIDOS] AS D,PEDIDOS AS P

WHERE D.IDPEDIDO=P.IDPEDIDO AND IDPRODUCTO

<>20 AND IDPRODUCTO <>6

GROUP BY IDPRODUCTO

--CONDICION >10000 (VENTAS EXCLUYENDO MERMELADAS COD 20 Y 6 Y

--FILTRANDO GROUP > 10000

SELECT IDPRODUCTO,

SUM(CANTIDAD*PRECIOUNIDAD) AS VENTAS

FROM [DETALLES DE PEDIDOS] AS D,PEDIDOS AS P

WHERE D.IDPEDIDO=P.IDPEDIDO AND IDPRODUCTO

<>20 AND IDPRODUCTO <>6

GROUP BY IDPRODUCTO HAVING

--FILTRANDO GRUPOS ENTRE 10000 Y 20000

SELECT IDPRODUCTO,

SUM(CANTIDAD*PRECIOUNIDAD) AS VENTAS

FROM [DETALLES DE PEDIDOS] AS D,PEDIDOS AS P

WHERE D.IDPEDIDO=P.IDPEDIDO AND IDPRODUCTO

<>20 AND IDPRODUCTO <>6

GROUP BY IDPRODUCTO HAVING

SUM(CANTIDAD*PRECIOUNIDAD) > 10000 AND

SUM(CANTIDAD*PRECIOUNIDAD) < 20000

--CONDICIONAMIENTO DE COLUMNA ACCESS NO RECONOCE


--CASE END CONDICIONA COLUMNAS SOLO EN SQL

SELECT IDPRODUCTO,

CASE WHEN PRECIOUNIDAD <100 THEN 'B' ELSE 'C' END AS TIPO,

SUM(CANTIDAD*PRECIOUNIDAD) AS VENTAS

FROM [DETALLES DE PEDIDOS] AS D,PEDIDOS AS P

WHERE D.IDPEDIDO=P.IDPEDIDO AND IDPRODUCTO

<>20 AND IDPRODUCTO <>6

GROUP BY IDPRODUCTO,TIPO HAVING

--ENLACE DE TABLAS CON INNER/LEFT/RIGHT + JOIN

--VENTAS POR PRODUCTO PARA AO 1998

SELECT IDPRODUCTO,

SUM(CANTIDAD*PRECIOUNIDAD) AS VENTAS

FROM [DETALLES DE PEDIDOS] AS D INNER JOIN

PEDIDOS AS P ON D.IDPEDIDO=P.IDPEDIDO

WHERE YEAR(FECHAPEDIDO)=1998

GROUP BY IDPRODUCTO

--PRODUCTOS VENDIDOS EL AO 1996

SELECT T.IDPRODUCTO ,D.IDPRODUCTO

FROM PRODUCTOS T INNER JOIN (PEDIDOS P INNER

JOIN [DETALLES DE PEDIDOS] D ON P.IDPEDIDO =

D.IDPEDIDO) ON T.IDPRODUCTO = D.IDPRODUCTO

WHERE YEAR(FECHAPEDIDO)=1996

--MOSTRAR LOS PROUDCTOS VENDIDOS EN 1996 Y EN BLANCO LOS QUE NO SE VENDIERON

SELECT T.IDPRODUCTO,T1.IDPRODUCTO

FROM PRODUCTOS T LEFT JOIN

(SELECT D.IDPRODUCTO

FROM (PEDIDOS P INNER

JOIN [DETALLES DE PEDIDOS] D ON P.IDPEDIDO =


D.IDPEDIDO)

WHERE YEAR(FECHAPEDIDO)=1996

GROUP BY D.IDPRODUCTO) T1 ON

T.IDPRODUCTO=T1.IDPRODUCTO

WHERE T1.IDPRODUCTO IS NULL

--PRODUCTOS NO VENDIDOS EN 1996

--USO DE LEFT JOIN

SELECT T.NOMBREPRODUCTO

FROM PRODUCTOS T LEFT JOIN

(SELECT D.IDPRODUCTO

FROM (PEDIDOS P INNER

JOIN [DETALLES DE PEDIDOS] D

ON P.IDPEDIDO=D.IDPEDIDO)

WHERE YEAR(FECHAPEDIDO)=1996

GROUP BY D.IDPRODUCTO) T1 ON

T.IDPRODUCTO=T1.IDPRODUCTO

WHERE T1.IDPRODUCTO IS NULL

--USO DE RIGHT JOIN

SELECT T.NOMBREPRODUCTO

FROM

(SELECT D.IDPRODUCTO

FROM (PEDIDOS P INNER

JOIN [DETALLES DE PEDIDOS] D

ON P.IDPEDIDO=D.IDPEDIDO)

WHERE YEAR(FECHAPEDIDO)=1996

GROUP BY D.IDPRODUCTO) T1

RIGHT JOIN PRODUCTOS T

ON T.IDPRODUCTO=T1.IDPRODUCTO

WHERE T1.IDPRODUCTO IS NULL


--UNION ACCESS

SELECT YEAR(FECHAPEDIDO) AS AO,

SUM(CANTIDAD*PRECIOUNIDAD) AS VENTAS

FROM (PEDIDOS P INNER JOIN [DETALLES DE PEDIDOS] D

ON P.IDPEDIDO=D.IDPEDIDO)

GROUP BY YEAR(FECHAPEDIDO)

UNION

SELECT 'TOTAL ' AS AO,

SUM(CANTIDAD*PRECIOUNIDAD) AS VENTAS

FROM (PEDIDOS P INNER JOIN [DETALLES DE PEDIDOS] D

ON P.IDPEDIDO=D.IDPEDIDO)

--VENTAS POR AO CON TOTAL EN (SQL SERVER: WITH ROLLUP

SELECT YEAR(FECHAPEDIDO) AS AO,

SUM(CANTIDAD*PRECIOUNIDAD) AS VENTAS

FROM (PEDIDOS P INNER JOIN [DETALLES DE PEDIDOS] D

ON P.IDPEDIDO=D.IDPEDIDO)

GROUP BY YEAR(FECHAPEDIDO)

UNION

SELECT 'TOTAL ' AS AO,

SUM(CANTIDAD*PRECIOUNIDAD) AS VENTAS

FROM (PEDIDOS P INNER JOIN [DETALLES DE PEDIDOS] D

ON P.IDPEDIDO=D.IDPEDIDO)

--consultas y subconsultas

--1.Numero pedidos por empleado con totales

SELECT Apellidos+' '+Nombre NomEmpleado,

count(idpedido) NroPedidos

FROM Pedidos,Empleados E

WHERE PEDIDOS.IdEmpleado=E.IdEmpleado
GROUP BY Apellidos+' '+Nombre

union

select NomEmpleado='Total general ',

COUNT(idpedido)NroPedidos

from pedidos

-- alternativa 2 de 1

SELECT NomEmpleado=CASE WHEN NomEmpleado

IS null then 'Total general' else

NomEmpleado END,NroPedidos FROM

(SELECT Apellidos+' '+Nombre NomEmpleado,

count(idpedido) NroPedidos

FROM Pedidos,Empleados E

WHERE PEDIDOS.IdEmpleado=E.IdEmpleado

GROUP BY Apellidos+' '+Nombre with rollup)

t1

--2.Pedidos por trimestre con subtotales

-- y total general

SELECT AO=CASE WHEN AO IS NULL THEN

'TOTAL ' ELSE AO END, TRIMESTRE=CASE

WHEN TRIMESTRE IS NULL AND AO IS NOT NULL

THEN 'SUBTOTAL '

WHEN TRIMESTRE IS NULL

AND AO IS NULL THEN 'GENERAL '

ELSE TRIMESTRE END,NROPEDIDOS FROM

(SELECT DATENAME(YYYY,FECHAPEDIDO) AO,

DATENAME(Q,FECHAPEDIDO) TRIMESTRE,

COUNT(IDPEDIDO) NROPEDIDOS

FROM PEDIDOS

GROUP BY DATENAME(YYYY,FECHAPEDIDO),
DATENAME(Q,FECHAPEDIDO) with ROLLUP) A

--3.PEDIDOS POR MESES POR BIMESTRES POR

-- AO CON SUBTOTALES Y TOTAL.

SELECT AO=CASE WHEN AO IS NULL THEN

'TOTAL ' ELSE AO END,

BIMESTRE=CASE WHEN BIMESTRE IS NULL AND

AO IS NOT NULL THEN 'SUBT AO'

WHEN BIMESTRE IS NULL AND AO IS NULL THEN

'GENERAL ' ELSE BIMESTRE END,

MES=CASE WHEN MES IS NULL AND BIMESTRE

IS NOT NULL THEN 'SUBT BIM'

WHEN MES IS NULL AND BIMESTRE

IS NULL THEN ' ' ELSE MES END,NROPEDIDOS

FROM

(SELECT DATENAME(YYYY,FECHAPEDIDO) AO,

STR((DATEPART(M,FECHAPEDIDO)+1)/2) BIMESTRE,

DATENAME(M,FECHAPEDIDO) MES,

COUNT(IDPEDIDO) NROPEDIDOS

FROM PEDIDOS

GROUP BY DATENAME(YYYY,FECHAPEDIDO),

STR((DATEPART(M,FECHAPEDIDO)+1)/2),

DATENAME(M,FECHAPEDIDO) with ROLLUP) B

SELECT (DAY(FECHAPEDIDO)+9)/10

FROM Pedidos WHERE DAY(FECHAPEDIDO) <31

GROUP BY (DAY(FECHAPEDIDO)+9)/10 WITH ROLLUP

-- CONSULTAS SQL
-- USO DE LA SENTENCIA SELEC

-- VER LA TABLA Y SUS CONSULTAS

SELECT * FROM CLIENTES

--VER TABLA Y ALGUNAS COLUMNAS

SELECT Pas, NombreCompaa,Direccin,ciudad FROM Clientes

WHERE Pas='Mxico' or Pas='Argentina'

--HACER UN RESUMEN DE TABLA

SELECT Pas,COUNT (IDCLIENTE)Ncltes

FROM Clientes GROUP BY Pas

--resumencondicionado de tabla

SELECT Pas, COUNT(IDCLIENTE)Ncltes

FROM Clientes

WHERE Pas='Mxico' or Pas='Brasil'

or Pas='Argentina' or Pas= 'venezuela'

group by Pas

--operador logico y (and)

SELECT Pas, Ciudad,Direccin,NombreCompaa

FROM Clientes

WHERE Pas='Mxico' and

NombreCompaa like 'A%'

SELECT Pas, Ciudad,Direccin,NombreCompaa

FROM Clientes

WHERE Pas='Mxico' and

NombreCompaa like 'Truji%'

SELECT Pas, Ciudad,Direccin,NombreCompaa


FROM Clientes

WHERE Pas='Mxico' and

NombreCompaa like '%A'

--BUSCAR EN DOS TABLAS

SELECT distinct YEAR(FECHAPEDIDO)AO,

NombreCompaa

FROM Clientes, Pedidos

WHERE Clientes.IdCliente=Pedidos.IdCliente

and YEAR (fechapedido)=1998

--clentes que no compraron el 1998

SELECT NombreCompaa from Clientes

EXCEPT

SELECT distinct NombreCompaa

FROM Clientes, Pedidos

WHERE Clientes.IdCliente=Pedidos.IdCliente

and YEAR (fechapedido)=1998

--UNION DE DOS TABLAS

SELECT NombreCompaa FROM Clientes

UNION

SELECT NombreCompaa FROM Proveedores

--CLIENTES QUE COMPRARON DOS AOS CONSECUTIVOS

SELECT distinct YEAR(FECHAPEDIDO)AO,

NombreCompaa

FROM Clientes, Pedidos

WHERE Clientes.IdCliente=Pedidos.IdCliente

and YEAR (fechapedido)=1998

INTERSECT
SELECT distinct YEAR(FECHAPEDIDO)AO,

NombreCompaa

FROM Clientes, Pedidos

WHERE Clientes.IdCliente=Pedidos.IdCliente

and YEAR (fechapedido)=1997

--CONSULTAS ANIDADAS Y SUBCONSULTAS (nro de clientes q hay en me3xico)

SELECT COUNT(IDCLIENTE) Nrocli FROM

(SELECT IdCliente FROM Clientes

WHERE Pas='Mxico' )T1

-- VENTAS TOTALES

SELECT SUM(CANTIDAD*PRECIOUNIDAD) AS VENTAS

FROM [DETALLES DE PEDIDOS] AS D

-- VENTAS POR PRODUCTO

SELECT IDPRODUCTO,

SUM(CANTIDAD*PRECIOUNIDAD) AS VENTAS

FROM [DETALLES DE PEDIDOS] AS D

GROUP BY IDPRODUCTO

-- VENTAS POR PRODUCTO Y AO

SELECT IDPRODUCTO,YEAR(FECHAPEDIDO) AS AO,

SUM(CANTIDAD*PRECIOUNIDAD) AS VENTAS

FROM [DETALLES DE PEDIDOS] AS D,PEDIDOS AS P

WHERE D.IDPEDIDO=P.IDPEDIDO
GROUP BY IDPRODUCTO,YEAR(FECHAPEDIDO)

-- VENTAS EXCLUYENDO MERMERLADAS COD 20 Y 6

SELECT IDPRODUCTO,

SUM(CANTIDAD*PRECIOUNIDAD) AS VENTAS

FROM [DETALLES DE PEDIDOS] AS D,PEDIDOS AS P

WHERE D.IDPEDIDO=P.IDPEDIDO AND IDPRODUCTO

<> 20 AND IDPRODUCTO <> 6

GROUP BY IDPRODUCTO

-- VENTAS EXCLUYENDO MERMERLADAS COD 20 Y 6 Y

-- FILTRANDO GRUPOS ENTRE 10000 Y 20000

SELECT IDPRODUCTO,

SUM(CANTIDAD*PRECIOUNIDAD) AS VENTAS

FROM [DETALLES DE PEDIDOS] AS D,PEDIDOS AS P

WHERE D.IDPEDIDO=P.IDPEDIDO AND IDPRODUCTO

<> 20 AND IDPRODUCTO <> 6

GROUP BY IDPRODUCTO HAVING

SUM(CANTIDAD*PRECIOUNIDAD) > 10000 AND

SUM(CANTIDAD*PRECIOUNIDAD) < 20000

-- CONDICIONAMIENTO DE COLUMNA ACCESS NO RECONOCE

-- CASE END CONDICIONA COLUMNAS SOLO EN SQL

SELECT IDPRODUCTO,

CASE WHEN PRECIOUNIDAD <100 THEN 'B' ELSE 'C' END AS TIPO,

SUM(CANTIDAD*PRECIOUNIDAD) AS VENTAS

FROM [DETALLES DE PEDIDOS] AS D,PEDIDOS AS P

WHERE D.IDPEDIDO=P.IDPEDIDO AND IDPRODUCTO

<> 20 AND IDPRODUCTO <> 6

GROUP BY IDPRODUCTO,TIPO
-- ENLACE DE TABLAS CON JOIN + INNER/LEFT/RIGHT

-- VENTAS POR PRODUCTO PARA AO 1998

SELECT IDPRODUCTO,

SUM(CANTIDAD*PRECIOUNIDAD) AS VENTAS

FROM [DETALLES DE PEDIDOS] AS D INNER JOIN PEDIDOS AS P ON D.IDPEDIDO=P.IDPEDIDO

WHERE YEAR(FECHAPEDIDO)=1998

-- PRODUCTOS VENDIDOS EL AO 1996

SELECT T.IDPRODUCTO,D.IDPRODUCTO

FROM PRODUCTOS T INNER JOIN (Pedidos P INNER JOIN [Detalles de pedidos] D ON P.IdPedido
= D.IdPedido) ON T.IdProducto = D.IdProducto

WHERE YEAR(FECHAPEDIDO)=1996

GROUP BY T.IDPRODUCTO,D.IDPRODUCTO

--PRODUCTOS NO VENDIDOS EL AO 1996 LEFT JOIN

SELECT T.NOMBREPRODUCTO

FROM PRODUCTOS T LEFT JOIN

(SELECT D.IDPRODUCTO

FROM (Pedidos P INNER JOIN [Detalles de pedidos] D ON P.IdPedido = D.IdPedido)

WHERE YEAR(FECHAPEDIDO)=1996

GROUP BY D.IDPRODUCTO) T1 ON T.IDPRODUCTO=T1.IDPRODUCTO

WHERE T1.IDPRODUCTO IS NULL

-- USO DE RIGHT JOIN

SELECT T.NOMBREPRODUCTO

FROM

(SELECT D.IDPRODUCTO

FROM (Pedidos P INNER JOIN [Detalles de pedidos] D ON P.IdPedido = D.IdPedido)

WHERE YEAR(FECHAPEDIDO)=1996

GROUP BY D.IDPRODUCTO) T1 RIGHT JOIN PRODUCTOS T ON T.IDPRODUCTO=T1.IDPRODUCTO

WHERE T1.IDPRODUCTO IS NULL


-- VENTAS POR AO CON TOTAL (SQL SERVER:WITH ROLLUP)

SELECT YEAR(FECHAPEDIDO) AS AO,

SUM(CANTIDAD*PRECIOUNIDAD) AS VENTAS

FROM (Pedidos P INNER JOIN [Detalles de pedidos] D ON P.IdPedido = D.IdPedido)

GROUP BY YEAR(FECHAPEDIDO)

union

SELECT 'Total ' as AO,

SUM(CANTIDAD*PRECIOUNIDAD) AS VENTAS

FROM (Pedidos P INNER JOIN [Detalles de pedidos] D ON P.IdPedido = D.IdPedido)

GROUP BY IDPRODUCTO

-- VENTAS TOTALES

SELECT SUM(CANTIDAD*PRECIOUNIDAD) AS VENTAS

FROM [DETALLES DE PEDIDOS] AS D

-- VENTAS POR PRODUCTO

SELECT IDPRODUCTO,

SUM(CANTIDAD*PRECIOUNIDAD) AS VENTAS

FROM [DETALLES DE PEDIDOS] AS D

GROUP BY IDPRODUCTO

-- VENTAS POR PRODUCTO Y AO

SELECT IDPRODUCTO,YEAR(FECHAPEDIDO) AS AO,

SUM(CANTIDAD*PRECIOUNIDAD) AS VENTAS

FROM [DETALLES DE PEDIDOS] AS D,PEDIDOS AS P

WHERE D.IDPEDIDO=P.IDPEDIDO

GROUP BY IDPRODUCTO,YEAR(FECHAPEDIDO)
-- VENTAS EXCLUYENDO MERMERLADAS COD 20 Y 6

SELECT IDPRODUCTO,

SUM(CANTIDAD*PRECIOUNIDAD) AS VENTAS

FROM [DETALLES DE PEDIDOS] AS D,PEDIDOS AS P

WHERE D.IDPEDIDO=P.IDPEDIDO AND IDPRODUCTO

<> 20 AND IDPRODUCTO <> 6

GROUP BY IDPRODUCTO

-- VENTAS EXCLUYENDO MERMERLADAS COD 20 Y 6 Y

-- FILTRANDO GRUPOS ENTRE 10000 Y 20000

SELECT IDPRODUCTO,

SUM(CANTIDAD*PRECIOUNIDAD) AS VENTAS

FROM [DETALLES DE PEDIDOS] AS D,PEDIDOS AS P

WHERE D.IDPEDIDO=P.IDPEDIDO AND IDPRODUCTO

<> 20 AND IDPRODUCTO <> 6

GROUP BY IDPRODUCTO HAVING

SUM(CANTIDAD*PRECIOUNIDAD) > 10000 AND

SUM(CANTIDAD*PRECIOUNIDAD) < 20000

-- CONDICIONAMIENTO DE COLUMNA ACCESS NO RECONOCE

-- CASE END CONDICIONA COLUMNAS SOLO EN SQL

SELECT IDPRODUCTO,

CASE WHEN PRECIOUNIDAD <100 THEN 'B' ELSE 'C' END AS TIPO,

SUM(CANTIDAD*PRECIOUNIDAD) AS VENTAS

FROM [DETALLES DE PEDIDOS] AS D,PEDIDOS AS P

WHERE D.IDPEDIDO=P.IDPEDIDO AND IDPRODUCTO

<> 20 AND IDPRODUCTO <> 6

GROUP BY IDPRODUCTO,TIPO

-- ENLACE DE TABLAS CON JOIN + INNER/LEFT/RIGHT


-- VENTAS POR PRODUCTO PARA AO 1998

SELECT IDPRODUCTO,

SUM(CANTIDAD*PRECIOUNIDAD) AS VENTAS

FROM [DETALLES DE PEDIDOS] AS D INNER JOIN PEDIDOS AS P ON D.IDPEDIDO=P.IDPEDIDO

WHERE YEAR(FECHAPEDIDO)=1998

-- PRODUCTOS VENDIDOS EL AO 1996

SELECT T.IDPRODUCTO,D.IDPRODUCTO

FROM PRODUCTOS T INNER JOIN (Pedidos P INNER JOIN [Detalles de pedidos] D ON P.IdPedido
= D.IdPedido) ON T.IdProducto = D.IdProducto

WHERE YEAR(FECHAPEDIDO)=1996

GROUP BY T.IDPRODUCTO,D.IDPRODUCTO

--PRODUCTOS NO VENDIDOS EL AO 1996 LEFT JOIN

SELECT T.NOMBREPRODUCTO

FROM PRODUCTOS T LEFT JOIN

(SELECT D.IDPRODUCTO

FROM (Pedidos P INNER JOIN [Detalles de pedidos] D ON P.IdPedido = D.IdPedido)

WHERE YEAR(FECHAPEDIDO)=1996

GROUP BY D.IDPRODUCTO) T1 ON T.IDPRODUCTO=T1.IDPRODUCTO

WHERE T1.IDPRODUCTO IS NULL

-- USO DE RIGHT JOIN

SELECT T.NOMBREPRODUCTO

FROM

(SELECT D.IDPRODUCTO

FROM (Pedidos P INNER JOIN [Detalles de pedidos] D ON P.IdPedido = D.IdPedido)

WHERE YEAR(FECHAPEDIDO)=1996

GROUP BY D.IDPRODUCTO) T1 RIGHT JOIN PRODUCTOS T ON T.IDPRODUCTO=T1.IDPRODUCTO

WHERE T1.IDPRODUCTO IS NULL


-- VENTAS POR AO CON TOTAL (SQL SERVER:WITH ROLLUP)

SELECT YEAR(FECHAPEDIDO) AS AO,

SUM(CANTIDAD*PRECIOUNIDAD) AS VENTAS

FROM (Pedidos P INNER JOIN [Detalles de pedidos] D ON P.IdPedido = D.IdPedido)

GROUP BY YEAR(FECHAPEDIDO)

union

SELECT 'Total ' as AO,

SUM(CANTIDAD*PRECIOUNIDAD) AS VENTAS

FROM (Pedidos P INNER JOIN [Detalles de pedidos] D ON P.IdPedido = D.IdPedido)

GROUP BY IDPRODUCTO

MENSUALES

SELECT NOMBRECOMPAA, YEAR (FECHAPEDIDO) AS MES;

datepart("mm",FECHAPEDIDO)AS MES

SUM(CANTIDAD*PRECIOUNIDAD)AS VENTAS

FROM PEDIDOS P,[DETALLE DE PEDIDOS] D, CLIENTES AS C

WHERE P.IDPEDIDO=D.IDPEDIDO AND

P.IDCLIENTES=C.IDCLIENTES

GROUP BY NOMBRECOMPAA, YEAR (FECHAPEDIDO),datepart("mm",FECHAPEDIDO);

-----------------------------------------------------------------
VENTA BIMESTRAL

SELECT NOMBRECOMPAA,

YEAR(FECHAPEDIDO)AS AO,

CEILING((DATEPART(mm,FECHAPEDIDO)+1)/2) AS BIM,

SUM (CANTIDAD*PRECIOUNIDAD) AS VENTAS

FROM PEDIDOS AS P,[DETALLES DE PEDIDOS] AS D,CLIENTES AS C

WHERE P.IDPEDIDO=D.IDPEDIDO AND P.IDCLIENTE=C.IDCLIENTE

GROUP BY
NOMBRECOMPAA,YEAR(FECHAPEDIDO),CEILING((DATEPART(mm,FECHAPEDIDO)+1)/2)

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

VENTA CADA 4 MESES

SELECT NOMBRECOMPAA,

YEAR(FECHAPEDIDO)AS AO,

CEILING((DATEPART(mm,FECHAPEDIDO)+3)/4) AS BIM,

SUM (CANTIDAD*PRECIOUNIDAD) AS VENTAS

FROM PEDIDOS AS P,[DETALLES DE PEDIDOS] AS D,CLIENTES AS C

WHERE P.IDPEDIDO=D.IDPEDIDO AND P.IDCLIENTE=C.IDCLIENTE

GROUP BY
NOMBRECOMPAA,YEAR(FECHAPEDIDO),CEILING((DATEPART(mm,FECHAPEDIDO)+3)/4)

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

VENTAS SEMESTRALES POR CLIENTES c/6 meses

SELECT NOMBRECOMPAA,

YEAR(FECHAPEDIDO)AS AO,

CEILING((DATEPART(mm,FECHAPEDIDO)+5)/6) AS SEMESTRE,

SUM(CANTIDAD*PRECIOUNIDAD) AS VENTAS

FROM PEDIDOS AS P,[DETALLES DE PEDIDOS] AS D,CLIENTES AS C

WHERE P.IDPEDIDO=D.IDPEDIDO AND P.IDCLIENTE=C.IDCLIENTE


GROUP BY
NOMBRECOMPAA,YEAR(FECHAPEDIDO),CEILING((DATEPART(mm,FECHAPEDIDO)+5)/6)

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

NUMERO DE PEDIDOS POR PRODUCTOS POR SEMESTRE

SELECT NOMBREPRODUCTO,

YEAR(FECHAPEDIDO)AS AO,

CEILING((DATEPART(mm,FECHAPEDIDO)+5)/6) AS SEMESTRE,

COUNT(D.IDPEDIDO) AS NUMPEDIDOS

FROM PEDIDOS AS P,[DETALLES DE PEDIDOS] AS D,PRODUCTOS AS C

WHERE P.IDPEDIDO=D.IDPEDIDO AND D.IDPRODUCTO=C.IDPRODUCTO

GROUP BY NOMBREPRODUCTO,YEAR(FECHAPEDIDO),

CEILING((DATEPART(mm,FECHAPEDIDO)+5)/6)

WITH ROLLUP

ACESS

(SELECT NOMBREPRODUCTO, YEAR (FECHAPEDIDO) AS AO,

CEILING((datepart("mm",FECHAPEDIDO)+5)/6)AS SEM

COUT(IDPEDIDO) AS NUN PEDIDOS(CANTIDAD*PRECIOUNIDAD)AS VENTAS

FROM PEDIDOS AS P,[DETALLE DE PEDIDOS] D, CLIENTES AS C

WHERE P.IDPEDIDO=D.IDPEDIDO AND

P.IDPRODUCTO=C.IDPRODUCTO

GROUP BY NOMBREPRODUCTO, YEAR


(FECHAPEDIDO),INT((datepart("mm",FECHAPEDIDO)+5)/6)

UNION

(SELECT"ZTotal Genera"AS NOMBRE DEPRODUCTO,0 AS AO, 0 AS


SEMESTRE,COUNT(d.IDPEDIDO)AS NUMPEDIDOS

FROM [DETALLES DE PEDIDO] AS D;


SQL CODE

(SELECT NOMBREPRODUCTO, YEAR (FECHAPEDIDO) AS AO,

CEILING((datepart("mm",FECHAPEDIDO)+5)/6)AS SEM

COUT(IDPEDIDO) AS NUN PEDIDOS(CANTIDAD*PRECIOUNIDAD)AS VENTAS

FROM PEDIDOS AS P,[DETALLE DE PEDIDOS] D, CLIENTES AS C

WHERE P.IDPEDIDO=D.IDPEDIDO AND

P.IDPRODUCTO=C.IDPRODUCTO

GROUP BY NOMBREPRODUCTO, YEAR


(FECHAPEDIDO),INT((datepart("mm",FECHAPEDIDO)+5)/6)

UNION

(SELECT NOMBREPRODUCTO="Total General", AO=0, SEMESTRE=0,COUNT(d.IDPEDIDO)AS


NUMPEDIDOS

FROM [DETALLES DE PEDIDO] AS D

GROUP BY NOMBREDEPRODUCTO;

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

NUMERO DE PEDIDOS POR PRODUCTOS POR QUINCENA ORDENADA

SELECT NOMBREPRODUCTO=CASE

WHEN NOMBREPRODUCTO IS NULL THEN 'TOTAL GRAL'

ELSE NOMBREPRODUCTO END,

AO=CASE

WHEN AO IS NULL THEN ''

ELSE AO END,

QUINCENA=CASE
WHEN QUINCENA IS NULL THEN ''

ELSE QUINCENA END,

NUMPEDIDOS

FROM

(SELECT NOMBREPRODUCTO,

STR(YEAR(FECHAPEDIDO))AS AO,

STR(CEILING((DATEPART(ww,FECHAPEDIDO)+1)/2)) AS QUINCENA,

COUNT(D.IDPEDIDO) AS NUMPEDIDOS

FROM PEDIDOS AS P,[DETALLES DE PEDIDOS] AS D,PRODUCTOS AS C

WHERE P.IDPEDIDO=D.IDPEDIDO AND D.IDPRODUCTO=C.IDPRODUCTO

GROUP BY NOMBREPRODUCTO,STR(YEAR(FECHAPEDIDO)),

STR(CEILING((DATEPART(ww,FECHAPEDIDO)+1)/2))

WITH ROLLUP) T

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

ANUALES

SELECT NOMBRECOMPAA, YEAR (FECHAPEDIDO) AS AO,

datepart("mm",FECHAPEDIDO)AS AO;

SUM(CANTIDAD*PRECIOUNIDAD)AS VENTAS

FROM PEDIDOS P,[DETALLE DE PEDIDOS] D, CLIENTES AS C

WHERE P.IDPEDIDO=D.IDPEDIDO AND

P.IDCLIENTES=C.IDCLIENTES

GROUP BY NOMBRECOMPAA, YEAR (FECHAPEDIDO),datepart("mm",FECHAPEDIDO);


--SENTENCIAS SQL PARA CREAR UNA TABLA INDEPENDIENTE

--CREACION DE BASE DE DATOS

CREATE DATABASE HOTEL1

--ACTIVAR BASE DE DATOS

USE HOTEL1

--CREAR UNA TABLA

CREATE TABLE CLIENTES

( CODCLIENTE INT NOT NULL PRIMARY KEY,

NOMBCLIENTE VARCHAR(50) NOT NULL )

--AGREGAR COLUMNAS A UNA TABLA EXISTENTE

ALTER TABLE CLIENTES

ADD RUC CHAR(11) NULL,DNI CHAR(8) NULL

--CREAR TABLA DEPENDIENTE

CREATE TABLE HUESPEDES

( DNI CHAR(8) PRIMARY KEY,

NOMBHUESPED VARCHAR(50) NOT NULL,

CODCLT INT FOREIGN KEY REFERENCES

CLIENTES(CODCLIENTE) )

--CREACION DE LA TABLA DE SERVICIOS

CREATE TABLE SERVICIOS

(CODSERVICIO INT PRIMARY KEY NOT NULL,

NOMBSERVICIO VARCHAR(50) NOT NULL,

UNIDAD VARCHAR(20) NOT NULL,

TARIFA FLOAT CHECK (TARIFA>0))

--MODIFICAR UNA COLUMNA DE OPCIONAL A OBLIGATORIA


ALTER TABLE HUESPEDES

ALTER COLUMN CODCLT INT NOT NULL

-- CREAR TABLA DE PERSONAL

CREATE TABLE PERSONAL

(CODPERS INT NOT NULL,

NOMBPERS VARCHAR(50) NOT NULL,

CARGO VARCHAR(20) NOT NULL,

PRIMARY KEY (CODPERS ASC) )

--CREAR TABLA DE SERVICIOS POR HUESPED

CREATE TABLE TSERVICIO

(NROTARJETA INT PRIMARY KEY,

DNI CHAR(8) NOT NULL FOREIGN KEY REFERENCES HUESPEDES(DNI),

CODPERS INT NOT NULL FOREIGN KEY REFERENCES PERSONAL(CODPERS),

FECHA DATETIME NOT NULL)

--CREAR LA TABLA DETALLES DE SERVICIOS

CREATE TABLE DETTSERVICIOS

(NROTARJETA INT NOT NULL FOREIGN KEY REFERENCES TSERVICIO(NROTARJETA),

CODSERV INT NOT NULL FOREIGN KEY REFERENCES SERVICIOS(CODSERVICIO),

FECHASERV DATETIME NOT NULL,

CANTIDAD INT NOT NULL,

PRECIO FLOAT NOT NULL,

PRIMARY KEY(NROTARJETA,CODSERV,FECHASERV))

--VENTAS TOTALES

SELECT SUM(CANTIDAD*PRECIOUNIDAD) AS VENTAS


FROM [DETALLES DE PEDIDOS] AS D

--VENTAS POR PRODUCTO

SELECT IDPRODUCTO,

SUM(CANTIDAD*PRECIOUNIDAD) AS VENTAS

FROM [DETALLES DE PEDIDOS] AS D

GROUP BY IDPRODUCTO

--VENTAS POR PRODUCTO Y AO

SELECT IDPRODUCTO,YEAR(FECHAPEDIDO),

SUM(CANTIDAD*PRECIOUNIDAD) AS VENTAS

FROM [DETALLES DE PEDIDOS] AS D,PEDIDOS AS P

WHERE D.IDPEDIDO=P.IDPEDIDO

GROUP BY IDPRODUCTO,YEAR(FECHAPEDIDO)

--VENTAS EXCLUYENDO MERMELADAS COD 20 Y 6

SELECT IDPRODUCTO,

SUM(CANTIDAD*PRECIOUNIDAD) AS VENTAS

FROM [DETALLES DE PEDIDOS] AS D,PEDIDOS AS P

WHERE D.IDPEDIDO=P.IDPEDIDO AND IDPRODUCTO

<> 20 AND IDPRODUCTO <> 6

GROUP BY IDPRODUCTO

--VENTAS EXCLUYENDO MERMEMLADAS 20 Y 6 Y

--FILTRANDO GROUP ENTRE 10000 Y 20000

SELECT IDPRODUCTO,

SUM(CANTIDAD*PRECIOUNIDAD) AS VENTAS

FROM [DETALLES DE PEDIDOS] AS D,PEDIDOS AS P

WHERE D.IDPEDIDO=P.IDPEDIDO AND IDPRODUCTO

<> 20 AND IDPRODUCTO <> 6

GROUP BY IDPRODUCTO HAVING


SUM(CANTIDAD*PRECIOUNIDAD) >10000 AND

SUM(CANTIDAD*PRECIOUNIDAD) <20000

--CONDICIONAMIENTO DE COLUMNA ACCES NO RECONOCE

--CASE END CONDICIONA COLUMNAS SOLO EN SQL

SELECT IDPRODUCTO,

CASE WHEN PRECIOUNIDAD <100 THEN 'B' ELSE 'C' END AS TIPO

SUM(CANTIDAD*PRECIOUNIDAD) AS VENTAS

FROM [DETALLES DE PEDIDOS] AS D,PEDIDOS AS P

WHERE D.IDPEDIDO=P.IDPEDIDO AND IDPRODUCTO

<> 20 AND IDPRODUCTO <> 6

GROUP BY IDPRODUCTO, TIPO

--ENLACE DE TABLAS CON JOIN + INNER/LEFT/RIGHT

--VENTAS POR PRODUCTO PARA AO 1998

SELECT IDPRODUCTO,

SUM(CANTIDAD*PRECIOUNIDAD) AS VENTAS

FROM [DETALLES DE PEDIDOS] AS D INNER JOIN (CORREGIR EN EL CUADERNO,PRIMERO


INNER DESPUES JOIN) INNER= VALORES COMUNES; LEFT= TABLA DE LA IZQUIERDA PRINCIPAL;
RIGHT=TABLA DE LA DERECHA

PEDIDOS AS P ON D.IDPEDIDO=P.IDPEDIDO

WHERE YEAR(FECHAPEDIDO)=1998

GROUP BY IDPRODUCTO

--VENTAS DEL AO 1996

SELECT T.IDPRODUCTO,D.IDPRODUCTO

FROM PRODUCTOS T INNER JOIN (PEDIDOS P INNER

JOIN [DETALLES DE PEDIDOS] D ON P.IDPEDIDO=

D.IDPEDIDO) ON T.IDPRODUCTO=D.IDPRODUCTO

WHERE YEAR(FECHAPEDIDO)=1996

GROUP BY T.IDPRODUCTO,D.IDPRODUCTO
--PRODUCTOS QUE NO SE HAN VENDIDO EN EL AO 1996, USO DE LEFT JOIN

SELECT T.NOMBREPRODUCTO

FROM PRODUCTOS T LEFT JOIN

(SELECT D.IDPRODUCTO

FROM (PEDIDOS P INNER JOIN [DETALLES DE PEDIDOS] D

ON P.IDPEDIDO=D.IDPEDIDO)

WHERE YEAR(FECHAPEDIDO)=1996

GROUP BY D.IDPRODUCTO) T1 ON

T.IDPRODUCTO=T1.IDPRODUCTO

WHERE T1.IDPRODUCTO IS NULL

--USO DE RIGHT JOIN

SELECT T.NOMBREPRODUCTO

FROM

(SELECT D.IDPRODUCTO

FROM (PEDIDOS P INNER JOIN [DETALLES DE PEDIDOS] D

ON P.IDPEDIDO=D.IDPEDIDO)

WHERE YEAR(FECHAPEDIDO)=1996

GROUP BY D.IDPRODUCTO) T1 RIGHT JOIN

PRODUCTOS T ON T.IDPRODUCTO=T1.IDPRODUCTO

WHERE T1.IDPRODUCTO IS NULL

--VENTAS POR AO CON TOTAL (SQL SERVER:WITH ROLLUP)

SELECT YEAR (FECHAPEDIDO) AS AO,

SUM(CANTIDAD*PRECIOUNIDAD) AS VENTAS

FROM (PEDIDOS P INNER JOIN [DETALLES DE PEDIDOS] D

ON P.IDPEDIDO=D.IDPEDIDO)

GROUP BY YEAR(FECHAPEDIDO)
UNION

SELECT 'TOTAL' AS AO,

SUM(CANTIDAD*PRECIOUNIDAD) AS VENTAS

FROM (PEDIDOS P INNER JOIN [DETALLES DE PEDIDOS] D

ON P.IDPEDIDO=D.IDPEDIDO)

-- VENTAS POR EMPLEADO

SELECT [Measures].[Ventas] ON COLUMNS,

NON EMPTY [Empleados].[Nom Empleado].MEMBERS

ON ROWS

FROM [NEPTUNOSQL];

-- VENTAS POR EMPLEADO POR AO

SELECT ([Measures].[Ventas],

[Pedidos].[Ao].MEMBERS ) ON COLUMNS,

NON EMPTY

[Empleados].[Nom Empleado].MEMBERS

ON ROWS

FROM [NEPTUNOSQL];

-- VENTAS POR CLIENTE POR EMPLEADO

SELECT ([Measures].[Ventas] ,

[Empleados].[Nom Empleado].MEMBERS)

ON COLUMNS, NON EMPTY

[Clientes].[Nombre Compaa].MEMBERS

ON ROWS

FROM [NEPTUNOSQL];
-- VENTAS POR PROD POR AO

SELECT ([Measures].[Ventas] ,

[Pedidos].[Ao].MEMBERS)

ON COLUMNS, NON EMPTY

[Productos].[Nombre Producto].MEMBERS

ON ROWS

FROM [NEPTUNOSQL];

-- PEDIDOS POR PROD ESPC Y AO ESPC

-- PARA CLIENTE ESP

SELECT ([Measures].[Numero Pedidos] ,

[Pedidos].[Ao].&[1997])

ON COLUMNS, NON EMPTY

[Productos].[Nombre Producto].&[Caf de Malasia]

ON ROWS

FROM [NEPTUNOSQL]

WHERE [Clientes].[Nombre Compaa].

&[Antonio Moreno Taquera];

También podría gustarte