Está en la página 1de 11

Geancarlo Alexander Velásquez

5190-15-1559

Obtener todos los productos, cuyo nombre comienzan con la letra P y tienen un precio unitario
comprendido entre 10 y 120.(UnitPrice between 10 and 20)

SELECT * FROM products

WHERE productname LIKE 'P%'

AND unitprice BETWEEN 10 AND 120;

*Obtener todos los clientes de los países de: USA, Francia y UK.

SELECT * FROM customers

WHERE country IN ('USA', 'France', 'UK');

*Obtener todos los productos descontinuados y sin stock, que pertenecen alas categorías 1, 3, 4
y 7.

*/

SELECT * FROM products

WHERE discontinued = 1

AND unitsinstock = 0

AND categoryid IN (1,3,4,7);

Obtener todas las ordenes hechas por el empleado con código: 2, 5 y 7 en el año 1996

SELECT * FROM orders

WHERE employeeid IN (2, 5, 7);

SELECT * FROM customers

WHERE fax IS NOT NULL;


Geancarlo Alexander Velásquez
5190-15-1559

Seleccionar todos los clientes que no cuenten con FAX, del país de USA

SELECT * FROM customers

WHERE fax IS NULL

AND country = 'USA';

Seleccionar todos los empleados que cuentan con un jefe

SELECT * FROM employees

WHERE reportsto IS NOT NULL;

Seleccionar todos los campos del cliente, cuya compañía empiece con la letra de A hasta la D y
pertenezcan al país de USA, ordenarlos por la dirección.

SELECT * FROM customers

WHERE country = 'USA'

AND companyname BETWEEN 'A' AND 'D'

ORDER BY address ASC

Seleccionar todos los campos del proveedor, cuya compañía no comience con las letras de la B a
la G, y pertenezca al país de UK, ordenarlos por nombre de la compañía.

SELECT * FROM suppliers

WHERE country = 'UK'

AND NOT companyname BETWEEN 'B' AND 'G'

ORDER BY companyname ASC;

Seleccionar los productos vigentes cuyos precios unitarios están entre 35 y 250, sin stock en
almacén. Pertenecientes a las categorías 1, 3, 4, 7 y 8, que son distribuidos por los proveedores
2, 4, 6, 7 y 9.

SELECT * FROM products

WHERE supplierid IN (2, 4, 6, 7, 9)

AND categoryid IN (1, 3, 4, 7, 8)

AND discontinued = 0

AND unitprice BETWEEN 35 AND 250;


Geancarlo Alexander Velásquez
5190-15-1559

Seleccionar todos los campos de los productos descontinuados, que pertenezcan a los
proveedores con códigos: 1, 3, 7, 8 y 9, que tengan stock en almacén, y al mismo tiempo que sus
precios unitarios estén

entre 39 y 190, ordenados por código de proveedor y precio unitario de manera ascendente.

SELECT * FROM products

WHERE discontinued = 1

AND supplierid IN (1, 3, 7, 8, 9)

AND unitsinstock != 0

AND unitprice BETWEEN 39 AND 190

ORDER BY supplierid ASC, unitprice ASC;

Seleccionar los 7 productos con precios más caros, que cuenten con stock en almacén.

SELECT * FROM products

WHERE unitsinstock > 0

AND rownum <= 7

ORDER BY unitprice DESC;

Seleccionar los 9 productos, con menos stock en almacén, que pertenezcan a la categoría 3, 5 y 8.

SELECT * FROM products

WHERE unitsinstock > 0

AND categoryid IN (3,5,8)

AND rownum <= 9

ORDER BY unitprice ASC;


Geancarlo Alexander Velásquez
5190-15-1559

*Seleccionar las órdenes de compra, realizadas por el empleado con código entre el 2 y el 5,
además de los clientes con códigos que comienzan con las letras de laA hasta la G, del 31 de Julio
de cualquier año.

SELECT * FROM orders

WHERE employeeid BETWEEN 2 AND 5

AND customerid BETWEEN 'A' AND 'G'

AND EXTRACT(MONTH FROM orderdate) = 7

AND EXTRACT(DAY FROM orderdate) = 31

*Seleccionar las órdenes de compra, realizadas por el empleado con código3, de cualquier año
pero solo de los últimos 5 meses (agosto -Diciembre).

SELECT * FROM orders

WHERE employeeid = 3

AND EXTRACT(MONTH FROM orderdate) IN (8,9,10,11,12)

Seleccionar los detalles de las órdenes de compra, que tengan un monto de cantidad pedida
entre 10 y 250.

SELECT * FROM orderdetails

WHERE quantity BETWEEN 10 AND 250

*Visualizar el máximo y el mínimo precio de los productos por categoría, mostrar el nombre de
la categoría.

SELECT c.categoryname, p.categoryid, MAX(p.unitprice) AS MAX, MIN(p.unitprice) AS MIN

FROM products p

INNER JOIN categories c ON p.categoryid = c.categoryid

GROUP BY c.categoryname, p.categoryid;


Geancarlo Alexander Velásquez
5190-15-1559

Visualizar el máximo y mínimo precio de los productos por proveedor, mostrar el nombre de la
compañía proveedora.

SELECT

s.companyname AS nombre_proveedor,

p.supplierid,

MAX(p.unitprice) AS precio_maximo,

MIN(p.unitprice) AS precio_minimo

FROM products p

JOIN suppliers s ON p.supplierid = s.supplierid

GROUP BY s.companyname, p.supplierid;

Seleccionar las categorías que tengan más de 5 productos. Mostrar el nombre de la categoría y el
número de productos.

SELECT c.categoryname, COUNT(p.productid) AS NO_PRODUCTS

FROM categories c

JOIN products p ON c.categoryid = p.categoryid

GROUP BY c.categoryname

HAVING COUNT(p.productid) > 5;

Calcular cuántos clientes existen en cada ciudad.

SELECT city, COUNT(*) AS NOCOSTUMERS

FROM customers

GROUP BY city

ORDER BY city;

SELECT C.CATEGORYNAME AS nombre_categoria, SUM(P.UNITSINSTOCK) AS stock_total

FROM PRODUCTS P

JOIN CATEGORIES C ON P.CATEGORYID = C.CATEGORYID

GROUP BY C.CATEGORYNAME

ORDER BY nombre_categoria;
Geancarlo Alexander Velásquez
5190-15-1559

Calcular el stock total de los productos por cada categoría. Mostrar el nombre de la categoría y el
stock por categoría. Solamente las categorías 2, 5 y 8.

SELECT c.categoryname, SUM(p.unitsinstock) AS stock_total

FROM products p

JOIN categories c ON p.categoryid = c.categoryid

WHERE c.categoryid IN (2, 5, 8)

GROUP BY c.categoryname

ORDER BY c.categoryname;

Mostrar el número de órdenes realizadas de cada uno de los clientes por año.

SELECT

EXTRACT(YEAR FROM o.orderdate) AS year,

c.customerid,

c.companyname,

COUNT(o.orderid) AS numero_de_ordenes

FROM

orders o

JOIN

customers c ON o.customerid = c.customerid

GROUP BY

EXTRACT(YEAR FROM o.orderdate), c.customerid, c.companyname

ORDER BY

c.customerid, year;

Mostrar el número de órdenes realizadas de cada uno de los clientes porcada mes y año.

SELECT

EXTRACT(MONTH FROM o.orderdate) AS mes,

EXTRACT(YEAR FROM o.orderdate) AS anio,


Geancarlo Alexander Velásquez
5190-15-1559

c.customerid,

c.companyname,

COUNT(o.orderid) AS numero_de_ordenes

FROM

orders o

JOIN

customers c ON o.customerid = c.customerid

GROUP BY

EXTRACT(MONTH FROM o.orderdate), EXTRACT(YEAR FROM o.orderdate), c.customerid,


c.companyname

ORDER BY

c.customerid, anio, mes;

SELECT

EXTRACT(YEAR FROM O.ORDERDATE) AS anio,

E.LASTNAME AS apellido_empleado,

E.FIRSTNAME AS nombre_empleado,

COUNT(O.ORDERID) AS cantidad_ordenes

FROM ORDERS O

JOIN EMPLOYEES E ON O.EMPLOYEEID = E.EMPLOYEEID

GROUP BY EXTRACT(YEAR FROM O.ORDERDATE), E.LASTNAME, E.FIRSTNAME

ORDER BY anio, E.LASTNAME, E.FIRSTNAME;

Realice un script en SQL que permita crear un listado de los colaboradores y cantidad de órdenes
que realizaron en el año 1998.

SELECT

e.employeeid,

e.lastname || ', ' || e.firstname AS NOMBRE,

COUNT(o.orderid) AS cantidad_de_ordenes

FROM

employees e
Geancarlo Alexander Velásquez
5190-15-1559

LEFT JOIN

orders o ON e.employeeid = o.employeeid

WHERE

EXTRACT(YEAR FROM o.orderdate) = 1998

GROUP BY

e.employeeid, e.lastname, e.firstname

ORDER BY

e.employeeid;

Realice un script en SQL que permita crear una lista de los clientes y el monto total de las
órdenes y la cantidad de ordenes de cada uno en el año 1997.

SELECT

c.customerid,

c.companyname,

COUNT(o.orderid) AS cantidad_de_ordenes,

SUM(od.unitprice * od.quantity) AS monto_total_ordenes

FROM

customers c

LEFT JOIN

orders o ON c.customerid = o.customerid

LEFT JOIN

orderdetails od ON o.orderid = od.orderid

LEFT JOIN

products p ON od.productid = p.productid

WHERE

EXTRACT(YEAR FROM o.orderdate) = 1997

GROUP BY

c.customerid, c.companyname

ORDER BY

c.customerid;
Geancarlo Alexander Velásquez
5190-15-1559

Realice un script en SQL que permita crear una lista de los clientes y el monto total de las
órdenes y la cantidad de ordenes de cada uno en el año 1997.

SELECT

c.companyname AS nombre_cliente,

s.companyname AS nombre_proveedor,

e.lastname || ', ' || e.firstname AS nombre_empleado,

p.productname AS nombre_producto

FROM

orders o

JOIN

customers c ON o.customerid = c.customerid

JOIN

employees e ON o.employeeid = e.employeeid

JOIN

orderdetails od ON o.orderid = od.orderid

JOIN

products p ON od.productid = p.productid

JOIN

suppliers s ON p.supplierid = s.supplierid

WHERE

o.orderid = 10250;
Geancarlo Alexander Velásquez
5190-15-1559

Realice un script en SQL que permita crear una lista de los colaboradores y el monto total de las
órdenes y la cantidad de ordenes de cada uno (considere el mismo año del ejemplo anterior).

SELECT

e.employeeid,

e.lastname || ', ' || e.firstname AS nombre_completo,

COUNT(o.orderid) AS cantidad_de_ordenes,

SUM(od.unitprice * od.quantity) AS monto_total_ordenes

FROM

employees e

LEFT JOIN

orders o ON e.employeeid = o.employeeid

LEFT JOIN

orderdetails od ON o.orderid = od.orderid

WHERE

EXTRACT(YEAR FROM o.orderdate) = 1997

GROUP BY

e.employeeid, e.lastname, e.firstname

ORDER BY

e.employeeid;

SELECT

C.CATEGORYNAME AS Categoria,

COUNT(P.PRODUCTID) AS Cantidad_Productos

FROM

CATEGORIES C
Geancarlo Alexander Velásquez
5190-15-1559

LEFT JOIN

PRODUCTS P ON C.CATEGORYID = P.CATEGORYID

GROUP BY

C.CATEGORYNAME

ORDER BY

C.CATEGORYNAME;

SELECT COUNTRY, COUNT(*) AS cantidad_clientes

FROM CUSTOMERS

GROUP BY COUNTRY;

También podría gustarte