Está en la página 1de 6

1.- Recuperar toda la información de una tabla: recuperar todos los libros de la base de datos.

SELECT *

FROM libro

2.- Recuperar sólo algunos atributos de una tabla: recuperar el título y autor de todos los
libros.

SELECT libro_tit, libro_aut

FROM libro

3.- Proyección (consultas sin duplicados): recuperar todos los autores distintos de la base de
datos.

SELECT DISTINCT(libro_aut)

FROM libro

4.- . Ordenar resultados de una selección: recuperar título y autor de todos los libros
ordenando el resultado por autor (en orden alfabético inverso) y título.

SELECT libro_tit, libro_aut

FROM libro

ORDER BY libro_aut ASC, libro_tit

5. Uso de expresiones calculadas en las consultas: para cada préstamo, recuperar el número de
ejemplar, el código del socio y el número de días que ha tardado en devolverlo, ordenando el
resultado por el Código del socio y el número de días.

SELECT ejemp_num, socio_cod, (prest_lim - prest_ini) as dias_tardado

FROM prest

6. Seleccionar registros de una tabla por condición (cláusula WHERE): recuperar el título de
todos los libros cuyo autor es Date.

SELECT ejemp_num, socio_cod, (prest_lim - prest_ini) as dias_tardado

FROM prest
7. Seleccionar registros de una tabla por condición (cláusula WHERE): recuperar nombre y
apellidos de los socios que viven en Barcelona o Girona i que se han dado de alta durante el
año 1993.

SELECT socio_nom, socio_ape

FROM socio

WHERE socio_ciu = 'Barcelona' or socio_ciu='Girona' AND extract(year from socio_alt)=1993

8. Seleccionar registros de una tabla por condición (cláusula WHERE): recuperar el número de
ejemplar y el código de socio de todos los préstamos hechos en el año 1998 y que todavía no
han sido devueltos.

SELECT ejemp_num, socio_cod

FROM prest

WHERE prest_dev is NULL

9. Seleccionar registros de una tabla por condición (cláusula WHERE): recuperar todos los
libros que contienen la expresión ‘Bases de Datos’ en el título.

SELECT libro_tit

FROM libro

WHERE libro_tit LIKE '%Bases de Datos'

10. Seleccionar registros de una tabla por condición (cláusula WHERE): recuperar el número de
ejemplar y el código de socio de todos los préstamos hechos en el año 1998 y que o bien ha
sido devueltos fuera de plazo o bien todavía no se han devuelto y ya están fuera de plazo.
CONSULTAS DE VARIAS TABLAS

SELECT ejemp_num, socio_cod

FROM prest

WHERE extract(year from prst_ini)=1998 or (prest_lim-prest_dev)<0 or prest_dev is NULL

11. Combinar información de más de una tabla (unión relacional [join]): recuperar todos los
temas en los que están clasificados los libros escritos por Date.

SELECT distinct(tema_tem)

FROM tema_libro tl join libro as l on tl.libro_cod=l.libro_cod

WHERE l.libro_cod =ANY(SELECT libro_cod

FROM libro

WHERE libro_aut='Date')
12. Combinar información de más de una tabla (unión relacional [join]): recuperar los
préstamos no devueltos, mostrando el código del libro, y el nombre y apellidos del socio,
ordenando el resultado por apellidos y nombre del socio.

SELECT ej.libro_cod, s.socio_nom, s.socio_ape

FROM ejemp ej JOIN prest p ON ej.ejemp_num= p.ejemp_num JOIN socio s

ON p.socio_cod = s.socio_cod

WHERE prest_dev is NULL

13. Combinar información de más de una tabla (unión relacional [join]): recuperar el nombre y
apellido de los socios que durante el año 1997 han tomado en préstamo alguno de los libros
escritos por Date.

SELECT l.libro_tit, s.socio_nom, s.socio_ape

FROM ejemp ej JOIN prest p ON ej.ejemp_num= p.ejemp_num JOIN socio s

ON p.socio_cod = s.socio_cod JOIN libro l ON l.libro_cod= ej.libro_cod

WHERE prest_ini LIKE '%1997' AND l.libro_aut='Date'

14. Combinar información de una tabla consigo misma (unión relacional [join] de una misma
tabla): recuperar el código de los libros que están clasificados en alguno de los temas a los que
pertenece el libro con código 1. FUNCIONES DE AGREGACIÓN

SELECT l1.libro_cod

FROM libro l1

JOIN libro l1 libro l2

l1.libro_cod=l2.librocod

JOIN tema_libro tl on

Tl.libro_cod=l2.libro_cod

15. Funciones para calcular totales (recuentos) y promedios: recuperar el total de libros
escritos por Date y el promedio de ediciones que ha habido de estos libros.

SELECT COUNT(libro_tit), AVG(libro_edm)

FROM libro

WHERE libro_aut='Date'
16. Funciones para calcular estadísticos descriptivos: recuperar el número de días del
préstamo más largo del año 1997.

SELECT MAX((prest_dev-prest_ini)) as dias

FROM prest

WHERE extract (year FROM prest_dev)=1997 AND extract (year FROM prest_ini)=1997

17. Funciones para calcular totales (recuentos) y promedios: recuperar el total de libros que
hay en la biblioteca, el número de ejemplares y el promedio de ejemplares por libro.

SELECT COUNT(distinct(libro_cod)), COUNT(distinct(ejemp_num)), AVG(distinct(ejemp_ned))

FROM ejemp

18. Funciones para calcular totales (suma) y promedios: recuperar el total de préstamos
realizados en el año 1997, el número de préstamos devueltos y el número de préstamos no
devueltos. FUNCIONES DE AGREGACIÓN POR GRUPOS

SELECT COUNT(DISTINCT(pi.prest_ini)) as prestamos97, COUNT(DISTINCT(pvnot.prest_dev)) as


prestamos_totales, COUNT(pvnull.prest_dev) as prestamos_no_devueltos

FROM (SELECT pi.prest_ini

FROM prest pi

WHERE extract(year from prest_ini)= 1997 )pi, (SELECT prest_dev


FROM prest pvnot
WHERE prest_dev is not null ) pvnot,

(SELECT prest_dev

FROM prest pvnull

WHERE prest_dev is null) pvnull

*nose porque razón no me cuenta bien los nulos, debería dar.

19. Funciones para calcular estadísticos de grupo: recuperar, para cada socio, el número de
libros que ha tomado en préstamo.

SELECT socio_nom, SUM(ejemp_num)

FROM prest p JOIN socio s on p.socio_cod=s.socio_cod

GROUP BY socio_nom

20. Funciones para calcular estadísticos de grupo: recuperar el número de libros distintos que
ha tomado cada socio en préstamo.
SELECT COUNT(socio_cod), socio_cod

FROM prest

GROUP BY socio_cod

21. Funciones para calcular estadísticos de grupo: recuperar el número de días que ha estado
cada libro en préstamo.

select sum(pr.prest_dev-pr.prest_ini) as prestados,

ej.libro_cod

from prest as pr

join ejemp as ej on

ej.ejemp_num=pr.ejemp_num

where pr.prest_dev is not Null

group by ej.libro_cod

22. Funciones para calcular estadísticos de grupo: recuperar el número de ejemplares de cada
uno de los libros editados por Addison-Weley. Se quiere recuperar el título, idioma, autor i
número de ejemplares del libro, ordenado por número de ejemplares y autor.

SELECT COUNT(l.libro_tit), l.libro_tit, l.libro_aut, l.libro_idm

FROM libro l JOIN ejemp ej ON l.libro_cod=ej.libro_cod

WHERE libro_edi='Addison-Wesley'

GROUP BY l.libro_tit, l.libro_aut, l.libro_idm

23. Funciones para calcular estadísticos de grupo con condiciones sobre el resultado:
recuperar el código de los socios que han tomado más de un libro en préstamo durante el año
1997.

SELECT p.socio_cOD

FROM (SELECT socio_cod, ejemp_num

FROM prest p
WHERE extract(year from prest_ini)=1997) p

GROUP BY p.socio_cod

HAVING COUNT(p.socio_cod) >=2

24. Funciones para calcular estadísticos de grupo con condiciones sobre el resultado: recuperar
el código de los libros que pertenecen a más de un tema.

SELECT libro_cod

FROM tema_libro

GROUP by libro_cod

HAVING COUNT(libro_cod)>=2

25. Funciones para calcular estadísticos de grupo con condiciones sobre el resultado: para
todos los autores que han publicado más de 1 libro, recuperar el total de ejemplares que hay
en la biblioteca de todos sus libros, ordenar el resultado por número de ejemplares y autor.

SELECT COUNT(ejemp_num)

FROM ejemp ej JOIN libro l ON ej.libro_cod=l.libro_cod

WHERE libro_aut=(SELECT libro_aut

FROM libro

GROUP BY libro_aut

HAVING COUNT(libro_aut)>=2)

26. Funciones para calcular estadísticos de grupo con condiciones sobre el resultado: recuperar
el número total de préstamos que han hecho los socios que han tomado algún libro en
préstamo durante el año 1998.

SELECT COUNT(ejemp_num), socio_cod

FROM prest

WHERE socio_cod IN (SELECT socio_cod FROM prest WHERE extract(year from


prest_ini)=1998)

GROUP BY socio_cod

También podría gustarte