You are on page 1of 2

---------------------------------clase viernes 8 de febrero del 2019

---------------------------------------------
select year (o.orderdate) as a�o,avg(d.unitprice*d.quantity*(1-d.discount)) as
promedio
from Orders o inner join [Order Details] d on o.OrderID = d.OrderID group by
year(o.OrderDate)

select year (o.orderdate) as a�o, cast (avg(d.unitprice*d.quantity*(1-


d.discount))as decimal(10,2))as vntatal,
cast (sum (d.unitprice*d.quantity *(1-d.discount))as decimal (10,2)) as vtaneta,
count (*) as numregistro
from orders o inner join [Order Details] d on o.OrderID = d.OrderID group by
YEAR(o.OrderDate)

-----------------------------------------------------------------------------------
--------------------------------------------
select c.customerid,c.companyname, cast (sum(d.unitprice*d.quantity*(1-discount))as
decimal(10,2))
from Orders o inner join [Order Details] d on o.orderid = d.OrderID inner join
(select Customerid, companyname from Customers where country ='mexico')c on
o.customerid = c.CustomerID
where year (o.OrderDate)=1997
group by c.CustomerID, c.CompanyName

--calcular el promedio de ventas mensuales de la compa�ia --1ventas mensuales---


promedio de 1-----------------------------------
select cast (avg(vntaneta)as decimal (10,2))as promediovtmensual
from
(select MONTH (o.orderdate)as mes,cast (sum(d.unitprice*d.quantity*(1-
d.discount))as decimal (10,2))as vntaneta
from Orders o inner join [Order Details] d on o.OrderID = d.OrderID
where year (o.OrderDate)= 1997
group by MONTH (o.OrderDate)) as v

-----------------------------------------------------------------------------------
-------------------------------------------------------------------------
------sacar un indicepor registro ---------------------------------------------
--rouw number siempre va ha esta apcompa�ada por un over () el cual le va ha
indicar es orden
select ROW_NUMBER() over (order by customerid asc)as num ,*from Customers
---secuencia individual por pais con indice
--- partition by () es eencial para este caso
select ROW_NUMBER() over (partition by country order by country asc)as num
,*from Customers
-------------------------- cuando se trabaja un consulta como tabla no se puede
ordenar
-----------------------------------------------------------------------------------
-----------------------------------------------

--indices por paices


select ROW_NUMBER()over (order by country ), country from Customers order by
(country )
--indice por paices con indice por psices
select y.Num, ROW_NUMBER() over (partition by y.num order by y.num,
c.customerid)as numC,c.country,c.customerid,c.companyname
from customers c inner join
( select ROW_NUMBER()over (order by country ) as Num, country from
(select distinct country from Customers) as x) as y on c.country = y.country
--------------------------------------------------------------------sacar solo los
2 paices
select * from (
select y.Num, ROW_NUMBER() over (partition by y.num order by y.num,
c.customerid)as numC,c.country,c.customerid,c.companyname
from customers c inner join
( select ROW_NUMBER()over (order by country ) as Num, country from
(select distinct country from Customers) as x) as y on c.country = y.country) as z

where numc<= 2
----------------------------------------------------------------------ejercicios

--sacar el listado de los 3 mejores clientes por mes del a�o 1997 ----el mejor
cliente deacuerdo ala mayor venta neta va ha ser el mejor
--en el primer mes los 3 mejores clientes y asi sucesivamente

---------------------------------------------ejercicio 2
--el productop mas vendido por mes en el a�o 1997 en total 12 registro
-----------------------------------------------------ejercicio 3
--cuales son los paices q han recibido mayor descuento en cada a�o
--en listar el pais q mas descuento ha recibido por a�o
--

You might also like