Sunteți pe pagina 1din 4

Oracle.

Consultas SQL

Ejercicios consultas SQL


1. Inserta en la tabla CLIENTES los datos del siguiente CLIENTE:

NIF NOMBRE APELLIDO1 APELLIDO2 DIRECCION CP


12345678Z Andres Rodriguez López C/Mayor, 4, 1º Izq 15240

insert into CLIENTES(NIF,NOMBRE,APELLIDO1,APELLIDO2,DIRECCION,CP)


VALUES('12345678Z','Andres','Rodriguez','López','C/Mayor, 4, 1º
Izq','15240');

2. Crear una tabla llamada CLI_TEMP con una columna NIF, y guardar los NIF de todos
los clientes.

create table CLI_TEMP(

nif varchar2(9)

);

insert into CLI_TEMP select NIF from CLIENTES

3. Borra el NIF '12345678Z' de la tabla CLI_TEMP:

delete from CLI_TEMP where NIF='12345678Z'

4. Borra los datos de la tabla CLI_TEMP. Borra la propia tabla.

delete from CLI_TEMP;

drop table CLI_TEMP;

5. Actualizar el CP del cliente '12345678Z' a ‘15002’:

update clientes set cp='15002' where nif='12345678Z'

6. Obten los datos completos de los clientes

select * from clientes

7. Obten los datos de los clientes cuyo segundo apellido sea ‘López’

select * from clientes where apellido2='López'

8. igual que la anterior pero ordenados por nombre

select * from clientes where apellido2='López' order by nombre

9. Obten el NIF y el Nombre de los clientes

select nif,nombre from clientes order by nombre

10. Obten los datos de los clientes cuyo nombre comience por la letra L

select * from clientes where nombre like 'L%'

11. Obten nombre y apellidos de los clientes pero mostrados en una sola columna

1 de 4
Oracle. Consultas SQL

a) select nombre|| ' ' || apellido1 || ' ' || apellido2 from clientes

b) select nombre|| ' ' || apellido1 || ' ' || apellido2 as cliente from
clientes

12. Obten los pedidos ordenados por fecha en orden descendente y por identificador de
pedido ascendente

select * from pedidos order by fecha_pedido desc,pedidoid

13. Obten las fechas de los pedidos

select fecha_pedido from pedidos

14. Obtén las distintas fechas de los pedidos

select distinct fecha_pedido from pedidos order by 1

15. Obten los pedidos de la fecha 12/10/2010.

select * from pedidos where fecha_pedido=date '2010-10-12'

select * from pedidos where fecha_pedido='12/10/2010'

16. Obten los pedidos entre el 12 y el 14 de Octubre de 2010

a) select * from pedidos where fecha_pedido>=date '2010-10-12' and


fecha_pedido<=date '2010-10-14'

b) select * from pedidos where fecha_pedido between date '2010-10-12' and


date '2010-10-14'

17. Obten los pedidos del mes de octubre

select * from pedidos where extract(month from fecha_pedido)=10

18. Obten los pedidos con descuento

select * from pedidos where descuento>0

19. Obten los pendidos sin descuento

select * from pedidos where descuento=0 or descuento is null

20. Obten las lineas de pedido donde se hallan vendido mas de 2 unidades

select * from lineas_pedido where cantidad >2

21. Obten los libros cuyo beneficio de ganancias sea superior al 30%

select * from libros where ((precioventa-preciocompra)/preciocompra)*100


>=30

22. Obten las lineas de pedido con una nueva columna denominada ‘importe’ donde se
calcule el importe(cantidad*precioventa).

select
pedidoid,linea,libroid,cantidad,precioventa,(cantidad*precioventa) as
importe,descuento from lineas_pedido

2 de 4
Oracle. Consultas SQL

23. Igual que la anterior pero con una nueva columna denominada ‘importe_linea’ donde
se aplique el descuento

select
pedidoid,linea,libroid,cantidad,precioventa,(cantidad*precioventa) as
importe,descuento,((cantidad*precioventa)*(1-descuento/100.0)) as
importe_linea from lineas_pedido

24. Obten las líneas de pedido cuyo precio sea mayor que 10 y el descuento no sea nulo

select * from lineas_pedido where precioventa > 10 and not (descuento is


null)

25. Obten los pedidos con los datos de los clientes

select * from pedidos,clientes where pedidos.nif=clientes.nif

select * from pedidos inner join clientes on (pedidos.nif=clientes.nif)

26. Obten los pedidos cuya forma de pago halla sido al contado

a) select pedidos.*,formas_pago.descripcion from pedidos,formas_pago


where pedidos.pagoid = formas_pago.pagoid and
upper(formas_pago.descripcion) like '%CONTADO%'

b) select pedidos.*,formas_pago.descripcion from pedidos join formas_pago


on (pedidos.pagoid = formas_pago.pagoid) and
upper(formas_pago.descripcion) like '%CONTADO%'

27. Obten los pedidos de los clientes de la provincia de A coruña

a) select pedidos.*,provincias.nombre from


pedidos,clientes,localidades,provincias
where pedidos.nif=clientes.nif and clientes.localidadid =
localidades.localidadid and localidades.provinciaid =
provincias.provinciaid
and upper(provincias.nombre) = upper('A Coruña')

b) select pedidos.*,provincias.nombre from pedidos join clientes on


(pedidos.nif=clientes.nif)
join localidades on (clientes.localidadid = localidades.localidadid)
join provincias on (localidades.provinciaid = provincias.provinciaid)
and upper(provincias.nombre) = upper('A Coruña')
28. Obten los clientes que hallan realizado pedidos

a) select distinct clientes.* from clientes,pedidos where clientes.nif =


pedidos.nif

b) select distinct clientes.* from clientes join pedidos on (clientes.nif =


pedidos.nif)

c) select distinct clientes.* from clientes where nif in (select nif from
pedidos)

29. Obten los distintos clientes y la información de sus pedidos si los tienen tienen:

3 de 4
Oracle. Consultas SQL

select distinct clientes.* from clientes left join pedidos on


(clientes.nif=pedidos.nif)

30. Obten la cantidad de libros vendidos

select sum(cantidad) as total_libros from lineas_pedido

31. Obten la cantidad de libros vendidos por pedido

select pedidoid,sum(cantidad) as total_libros from lineas_pedido group


by pedidoid

32. Obten el libro con el precio de venta mas alto

select * from libros where precioventa = (select max(precioventa) from


libros)

33. Obten el precio de venta medio de todos los libros

select avg(precioventa) as precio_medio from libros

34. Obten el título de los libros escritos por más de un autor.

a) select libros.titulo from libros,autoria where libros.libro_id =


autoria.libroid
group by libros.titulo having count(*)>1

b) select libros.titulo from libros join autoria on ( libros.libro_id =


autoria.libroid)
group by libros.titulo having count(*)>1

c) select titulo from libros where libro_id in (select libroid from autoria
group by libroid having count(*) > 1)

35. Obten los libros que tenga un número de páginas mayor que cualquiera de los libros
de la editorial ‘EDICIONES B’

a) select titulo,numpaginas from libros


where numpaginas >ALL
(select libros.numpaginas from libros,editoriales
where libros.editorialid = editoriales.editorialid
and upper(editoriales.nombre)='EDICIONES B')

b) select titulo,numpaginas from libros


where numpaginas >ALL
(select libros.numpaginas from libros join editoriales
on (libros.editorialid = editoriales.editorialid)
and upper(editoriales.nombre)='EDICIONES B')

36. Obten los clientes que no tienen pedidos

a) select * from clientes c


where not exists (select * from pedidos where nif=c.nif)

b) select * from clientes left join pedidos on (clientes.nif = pedidos.nif)


where pedidos.nif is null

4 de 4

S-ar putea să vă placă și