INTRODUCCION A SQL TRANSACT
Desarrollar las siguientes consultas usando la Base de Datos Northwind:
1. Obtener todos los productos cuyo nombre comienzan con M y tienen un
precio comprendido entre 28 y 129.
select * from products where productname like 'M%' and unitprice between 28 and 129
2. Obtener todos los clientes del País de USA, Francia y UK.
select * from customers where country in ('France','UK','usa')
order by country
3. Obtener todos los productos descontinuados o con stock cero.
select * from products where discontinued=0 or unitsinstock=0
4. Obtener todas las órdenes hechas por el empleado King Robert.
select * from orders as o inner join employees as e on [Link]=[Link]
where firstname+lastname='robertking'
5. Obtener todas las ordenes hechas por el cliente cuya compañía es “Que
delicia”
select * from orders as o inner join customers as c on [Link]=[Link] where
companyname='Que delícia'
6. Obtener todas las ordenes hechas por el empleado King Robert ,
Davolio Nancy y Fuller Andrew.
select * from orders as o inner join employees as e on [Link]=[Link]
where firstname+lastname in('robertking','Nancydavolio','AndrewFuller')
7. Obtener todos los productos (código, nombre, precio, stock) de la orden
10257.
select [Link],productname,[Link],unitsinstock from products
as p inner join [order details] as od on [Link]=[Link] and
orderid=10257
8. Obtener todos los productos (código, nombre, precio, stock) de las
órdenes hechas desde 1997 hasta la fecha de hoy.
select [Link],productname,[Link],unitsinstock from products
as p inner join [order details] as od on [Link]=[Link]
inner join orders as o on [Link]=[Link] and
year(orderdate)>=1997
9. Calcular los 15 productos mas caros
select top 15 * from products order by unitprice Desc
10. Calcular los 5 productos mas baratos
select top 5 * from products order by unitprice
11. Calcular cuantos clientes existen en cada País
select country,count(*) from customers group by country
12. Calcular cuantos proveedores existen en cada Ciudad
select city,count(*) from suppliers group by city
13. Obtener el Nombre de todas las categorías y los nombres de sus
productos, precio y stock.
select categoryname,productname,unitprice,unitsinstock from categories as c inner join
products as p on [Link]=[Link] order by categoryname
14. Obtener el Nombre de todas las categorías y los nombres de sus
productos, solo los productos que su nombre no comience con la letra P.
select categoryname,productname,unitprice,unitsinstock from categories as c inner join
products as p on [Link]=[Link] where productname not like 'P%' order by
categoryname
15. Calcular el stock de productos por cada categoría. Mostar el nombre de
la categoría y el stock por categoría.
select categoryname,sum([Link]) from categories as c inner join products as p
on [Link]=[Link] group by categoryname
16. Obtener el Nombre del Cliente, Nombre del Empleado y el nombre de
los Productos que están en la orden 10794.
select [Link],firstname+' '+lastname as [Nombre de
empleado],[Link],productname
from orders as o inner join customers as c on [Link]=[Link] inner join
employees as e on [Link]=[Link] inner join [order details] as od on
[Link]=[Link] inner join products as p on [Link]=[Link] inner join
suppliers as s on [Link]=[Link]
where [Link]=10794
17. Mostrar el Número de Ordenes de Cada uno de los Cliente por año.
select companyname,year(orderdate),count(orderid)
from customers as c inner join orders as o on [Link]=[Link]
group by companyname,year(orderdate)
18. Contar el número de órdenes que se han realizado por años y meses.
select year(orderdate),DATENAME(month, orderdate),count(orderid)
from orders
group by year(orderdate),DATENAME(month, orderdate)
19. Seleccionar el nombre de la compañía del cliente, el código de la orden
de compra, la fecha de la orden de compra, código del producto,
cantidad pedida del producto, nombre del producto, el nombre de la
compañía Proveedora y la ciudad del Proveedor, usar Join.
select
[Link],[Link],orderdate,[Link],[Link],productname,[Link]
me,[Link]
from orders as o inner join customers as c on [Link]=[Link] inner join
employees as e on [Link]=[Link] inner join [order details] as od on
[Link]=[Link] inner join products as p on [Link]=[Link] inner join
suppliers as s on [Link]=[Link]
20. Seleccionar el nombre de la compañía del cliente, nombre del contacto,
el código de la orden de compra, la fecha de la orden de compra, código
del producto, cantidad pedida del producto, nombre del producto y el
nombre de la compañía Proveedora, usar Join. Solamente las
compañías proveedoras que comienzan con la letra de la A hasta la letra
G, además la cantidad pedida del producto debe estar entre 23 y 187.
select
[Link],[Link],[Link],orderdate,[Link],[Link],productnam
e,[Link]
from orders as o inner join customers as c on [Link]=[Link] inner join
employees as e on [Link]=[Link] inner join [order details] as od on
[Link]=[Link] inner join products as p on [Link]=[Link] inner join
suppliers as s on [Link]=[Link]
where ([Link] between 23 and 187) and substring([Link],1,1) between
'A' and 'G'
order by [Link]
21. Seleccionar cuantos proveedores tengo en cada país, considerando solo
a los nombres de los proveedores que comiencen con la letra A hasta la
letra P, además de mostrar solo los países donde tenga mas de 2
proveedores.
select country,count(*)
from suppliers
where substring(companyname,1,1) between 'A' and 'P'
group by country
having count(*)>2
22. Obtener el Número de Productos, por cada categoría. Mostrando el
nombre de la categoría, el nombre del Producto, y el total de productos
por categoría, solamente de las categorías 1, 2, 6 y 8. Ordenar por el
nombre de la categoría.
select categoryname,productname
from categories as c inner join products as p on [Link]=[Link]
where [Link] in (1,2,6,8)
order by categoryname
compute count(productname) by categoryname
23. Mostrar el número de la orden, la fecha de la orden y el total en soles
que haciende cada orden.
select [Link],orderdate,sum(unitprice*quantity-discount)
from orders as o inner join [order details] as od on [Link]=[Link]
group by [Link],orderdate
24. Mostrar el nombre de Producto y en cuantas ordenes de compra se
encuentra.
select productname,count(orderid)
from products as p inner join [order details] as od on [Link]=[Link]
group by productname