Sei sulla pagina 1di 23

TALLER DE IMPLEMENTACIN Y ADMINISTRACIN DE

BASE DE DATOS
LENGUAJE DE MANIPULACIN DE DATOS (DML-SQL)
Consultas en Oracle
Integrantes

Jara Rodriguez Kevin


Cortez Mirenghi Rossana
Pineda Suarez Jesus
Guerrero Lopez Judith
Montalvo Arica Gabriel

INSTRUCCIONES DE DESARROLLO: Resolver cada una de las preguntas


planteadas, indicando para cada una de ellas la consulta SQL as como la figura
de registros resultado de la consulta
1. Obtener una lista de todos los productos
SELECT *
FROM producto;

2.

Obtener una lista de todos los productos indicando para cada uno su
cdigo, descripcin, precio
SELECT codigo, descripcion, preciounitario
FROM producto;

3.

Obtener una lista de todos los productos indicando para cada uno su
descripcin, precio y precio incluido IGV
SELECT descripcion, preciounitario, 0.18*preciounitario as IGV
FROM producto;

4.

Listar la fecha del da actual


SELECT current_date as fechaactual
FROM dual;

5.

Listar la fecha del da 30 de marzo del ao 2008


SELECT to_date('30/03/2008', 'DD/MM/YYYY')
FROM dual;

6.
Listar de cada cliente su nombre completo con el formato apellido,
nombre
SELECT nombre || ' ' || apellido as Clientes
FROM cliente;

7.

Listar de los productos que empiezan con la letra P


SELECT *
FROM producto
WHERE descripcion LIKE 'P%';

8.

Listar de los productos cuya segunda letra es la A


SELECT *
FROM producto
WHERE descripcion like '_a%';

9.

Listar de los productos que acaben con la letra A


SELECT descripcion
FROM producto
WHERE descripcion like '%a';

10.
Listar los clientes que pertenecen a la zona 1, zona 2 y zona 3
(descripcin)
SELECT cliente.nombre , zona.descripcion
FROM cliente
INNER JOIN zona
ON cliente.idzona = zona.idzona
ORDER BY zona.descripcion;

11.
Listar la descripcin de cada zona, su cantidad de caracteres, y el primer
carcter
SELECT descripcion,length(descripcion),substr(descripcion,0,1)
FROM zona;

12.

Listar los clientes que no han registrado direccin


SELECT *
FROM cliente
where direccion is null;

13.

Listar las ventas realizadas en Abril del presente ao


SELECT *
FROM documentoventa
WHERE extract(month from fecha) = '4';

14.

Listar las facturas de venta emitidas en Abril del presente ao


SELECT * FROM documentoventa
WHERE EXTRACT (year FROM fecha) = 2008
AND EXTRACT (month FROM fecha) = 4
AND numerodocumento like 'F%';

15.
Listar las ventas realizadas el mes de Marzo del ao 2008 ordenados por
fecha
SELECT * FROM documentoventa
WHERE EXTRACT (month FROM fecha) = 3
AND EXTRACT (year FROM fecha) = 2008;

16.

Listar los cinco productos ms caros (mayor precio unitario)


SELECT *
FROM (SELECT descripcion, preciounitario
FROM producto
ORDER BY preciounitario desc)
WHERE rownum <= 5

17.
Listar descripcin y precio de los tres productos ms baratos (menor
precio unitario)
SELECT * from(SELECT descripcion, preciounitario
FROM producto
ORDER BY preciounitario)
WHERE rownum <=3

18.

Listar los datos de cada uno de los productos, indicando descripcin de


producto, precio unitario y descripcin de categora
SELECT producto.descripcion, producto.preciounitario,
categoria.descripcion
FROM producto
INNER JOIN categoria
ON producto.idcategoria = categoria.idcategoria ;

19.

Listar todas las ventas (nmero de documento, fecha y total) de los


productos del tipo Hardware (abreviatura HD)
SELECT documentoventa.numerodocumento,
documentoventa.fecha,documentoventa.total , categoria.descripcion

FROM detalleventa
JOIN documentoventa
ON documentoventa.iddocumentoventa =
detalleventa.iddocumentoventa
JOIN producto
ON detalleventa.idproducto = producto.idproducto
JOIN categoria
ON producto.idcategoria = categoria.idcategoria
WHERE categoria.descripcion LIKE 'Hardware';

20.

Listar slo las categoras que tienen productos relacionados indicando


para cada una de ellas su descripcin y nombres de productos
SELECT categoria.descripcion, producto.descripcion
FROM producto
INNER JOIN categoria
ON producto.idcategoria = categoria.idcategoria ;

21.
Listar los nombres de los productos comprados por los clientes de la
zona 1
SELECT detalleventa_producto.descripcion AS descripcion_producto
FROM zona
INNER JOIN cliente zona_cliente
ON zona.idzona = zona_cliente.idzona
INNER JOIN documentoventa cliente_documentov
ON cliente_documentov.idcliente = zona_cliente.idcliente
INNER JOIN detalleventa documentoventa_detalleventa
ON documentoventa_detalleventa.iddocumentoventa =
cliente_documentov.iddocumentoventa
INNER JOIN producto detalleventa_producto
ON detalleventa_producto.idproducto =
documentoventa_detalleventa.idproducto
WHERE zona.idzona = 1 ;

22.

Listar nombre de cliente, descripcin de zona, nombre de producto y


descripcin de categora de las facturas emitidas por un importe total
mayor a 1000 nuevos soles
select cliente.nombre, zona.descripcion, producto.descripcion,
categoria.descripcion
from detalleventa
inner join documentoventa
on detalleventa.iddocumentoventa =
documentoventa.iddocumentoventa
inner join producto
on detalleventa.idproducto = producto.idproducto
inner join cliente
on documentoventa.idcliente = cliente.idcliente
inner join zona
on cliente.idzona = zona.idzona
inner join categoria
on producto.idcategoria = categoria.idcategoria
where documentoventa.total > 1000;

23.

Listar el nombre completo de los clientes para los que se ha girado


facturas por un importe total mayor a 1000 nuevos soles
SELECT nombre||' '||apellido as nombre, numerodocumento, total
FROM documentoventa
JOIN cliente
ON documentoventa.idcliente = cliente.idcliente
WHERE total > 1000;

24.

Listar el nombre completo de los clientes de la zona 1 (por descripcin


de zona) que compraron el da 03 de abril del 2008
select cliente.nombre||' '||cliente.apellido as nombre,
documentoventa.fecha
from detalleventa
inner join documentoventa
on detalleventa.iddocumentoventa =
documentoventa.iddocumentoventa
inner join cliente
on documentoventa.idcliente = cliente.idcliente
inner join zona
on cliente.idzona = zona.idzona
where documentoventa.fecha = to_date('2008-04-03','YYYY-MM-DD')

25.

Listar el nombre completo de los clientes que compraron memorias en el


mes de marzo del 2008
SELECT nombre||' '||apellido, detalle_producto.descripcion , fecha FROM
cliente
INNER JOIN documentoventa cliente_documentoventa
ON cliente.idcliente= cliente_documentoventa.idcliente
INNER JOIN detalleventa docum_detalleventa
ON docum_detalleventa.iddocumentoventa =
cliente_documentoventa.iddocumentoventa
INNER JOIN producto detalle_producto

ON detalle_producto.idproducto = docum_detalleventa.idproducto
WHERE (fecha >= '01/03/08'
AND fecha <= '31/03/08')
AND (detalle_producto.descripcion like 'Memoria%');

26.

Listar el nombre completo de los clientes que compraron algn jueves


del mes de abril del 2008
SELECT cliente.nombre||' '||cliente.apellido as nombre,
documentoventa.fecha
FROM detalleventa
INNER JOIN documentoventa
ON detalleventa.iddocumentoventa =
documentoventa.iddocumentoventa
INNER JOIN cliente
ON documentoventa.idcliente = cliente.idcliente
INNER JOIN zona
ON cliente.idzona = zona.idzona
WHERE to_char(documentoventa.fecha,'YYYY-MM-Day') LIKE '2008-04Jueves%';

27.

Listar todas las categoras (incluir aquellas que no tienen productos


relacionados) indicando para cada una de ellas su descripcin de
categora y nombre de producto
SELECT categoria.descripcion,producto.descripcion
FROM categoria
LEFT JOIN producto
ON categoria.idcategoria = producto.idcategoria;

28.

Hacer un producto cartesiano de los registros de categora y productos,


indicando para cada registro su descripcin de categora y nombre de
producto
SELECT categoria.descripcion, producto.descripcion
FROM categoria
CROSS JOIN producto;

29.

Listar la cantidad de clientes por zona


SELECT descripcion, count(descripcion)
FROM zona
INNER JOIN cliente
ON zona.idzona = cliente.idzona
GROUP BY descripcion
ORDER BY descripcion;

30.

Listar la cantidad de documentos de venta emitidos por cada cliente


select cliente.nombre, count(cliente.nombre) as cantidadodocumento
from documentoventa
join cliente
on documentoventa.idcliente = cliente.idcliente
group by cliente.nombre;

31.

Listar el total en nuevos soles facturados en abril del 2008


SELECT sum(total)
FROM documentoventa
WHERE extract(month from fecha) = 4
AND extract(year from fecha) = 2008;

32.

Listar la cantidad de clientes agrupados por primera letra de su apellido


select substr(apellido,1,1) as letra, count(substr(apellido,1,1))
from cliente
group by substr(apellido,1,1)
order by substr(apellido,1,1);

33.
Listar el total en nuevos soles de ventas realizadas por mes en el ao
2008
SELECT extract(month from fecha) AS mes, sum(total)
FROM documentoventa
group by extract(month from fecha);

34.

Listar el total de IGV a cancelar por mes en el ao 2008


select extract(month from fecha) as mes, sum(igv)
from documentoventa
where extract(year from fecha) = 2008
group by extract(month from fecha)
order by extract(month from fecha);

35.

Listar el total en nuevos soles emitido por concepto de boletas y por


concepto de facturas a la fecha
SELECT substr( numerodocumento,0,1) as documento, sum(total)
FROM documentoventa
GROUP BY substr( numerodocumento,0,1);

36.

Listar el total en nuevos soles cancelado por cada cliente


select cliente.nombre, sum(documentoventa.total)
from documentoventa
join cliente
on documentoventa.idcliente = cliente.idcliente
group by cliente.nombre

37.

Listar la cantidad de documentos (slo facturas) emitidos por cliente


SELECT c.nombre, count(c.nombre)
FROM documentoventa
INNER JOIN cliente c
ON c.idcliente = documentoventa.idcliente
WHERE numerodocumento like 'F%'

GROUP BY c.nombre
ORDER BY c.nombre;

38.

Listar el nombre completo de los clientes que compraron ms de una vez


select cliente.nombre, count(cliente.nombre)
from documentoventa
join cliente
on documentoventa.idcliente = cliente.idcliente
group by cliente.nombre
having count(cliente.nombre) >1;

39.
Listar el nombre completo de los clientes que compraron ms de una vez
en abril de 2008
SELECT nombre||' '||apellido as nombres, COUNT(nombre)
FROM documentoventa
JOIN cliente
ON documentoventa.idcliente = cliente.idcliente
WHERE EXTRACT(month from fecha) = 4
AND EXTRACT(year from fecha) = 2008
GROUP BY nombre||' '||apellido
HAVING COUNT(nombre) > 1;

40.

Listar el producto ms veces vendido


select * from (select producto.descripcion,
count(documentoventa.iddocumentoventa) as cantidad
from detalleventa
join documentoventa
on documentoventa.iddocumentoventa =
detalleventa.iddocumentoventa

join producto
on detalleventa.idproducto = producto.idproducto
group by producto.descripcion
order by cantidad desc)
where rownum = 1;

41.

Listar el producto de mayor volumen de ventas


select * from (select p.descripcion AS NombreProducto , cantidad
from detalleventa
INNER JOIN producto p
ON p.idproducto = detalleventa.idproducto
ORDER BY cantidad desc
) where rownum = 1;

42.

Listar las 3 zonas con ms clientes


select * from (select zona.descripcion, count(zona.descripcion)
from cliente
join zona
on cliente.idzona = zona.idzona
group by zona.descripcion
order by count(zona.descripcion) desc)
where rownum <=3;

43.

Listar la cantidad de clientes por zona, indicando el valor cero (0) para
las zonas que no tengan clientes registrados
select descripcion, count (nombre)

from zona
left join cliente
on zona.idzona = cliente.idzona
group by descripcion
order by descripcion;

44.

Listar las zonas que no tienen clientes asignados


select zona.descripcion
from cliente
right join zona
on cliente.idzona = zona.idzona
where idcliente is null;

45.

Listar los productos que no han sido vendidos a la fecha


select producto.descripcion
from documentoventa
join detalleventa
on detalleventa.iddocumentoventa =
documentoventa.iddocumentoventa
right join producto
on detalleventa.idproducto = producto.idproducto
where documentoventa.fecha is null;

46.
ao

Listar los productos que no han sido vendidos en Febrero del presente
select producto.descripcion, documentoventa.fecha
from detalleventa
join documentoventa
on documentoventa.iddocumentoventa =
detalleventa.iddocumentoventa
join producto
on detalleventa.idproducto = producto.idproducto
where extract (month from documentoventa.fecha) != 2;

47.

Listar la cantidad de clientes por zona que compraron al menos una vez
en abril del ao 2008
select zona.descripcion, count(zona.descripcion)
from documentoventa
join cliente
on documentoventa.idcliente = cliente.idcliente
join zona
on cliente.idzona = zona.idzona
where extract(month from fecha) = 4
and extract(year from fecha) = 2008
group by zona.descripcion;

48.

Listar la cantidad de productos por categora que se vendieron al menos


una vez algn da jueves de abril del ao 2008
select categoria.descripcion, count(producto.descripcion) as
cantidadproduto
from detalleventa
inner join documentoventa
on detalleventa.iddocumentoventa =
documentoventa.iddocumentoventa
join producto

on detalleventa.idproducto = producto.idproducto
join categoria
on categoria.idcategoria = producto.idcategoria
where to_char(documentoventa.fecha,'YYYY-MM-Day') LIKE '2008-04Jueves%'
group by categoria.descripcion;

Potrebbero piacerti anche