viernes, 4 de mayo de 2012

Ejercicios DML

1. Obtener el nombre de la comunidad con menor número de habitantes.
SELECT provincias.comunidad, SUM (localidades.habitantes) AS habitantes FROM provincias, localidades WHERE localidades.codprov = provincias.codprov GROUP BY provincias.comunidad ORDER BY habitantes ASC LIMIT 1

2. Obtener el nombre de las comunidades con un número de habitantes por debajo de la media de todas las comunidades.
SELECT provincias.comunidad, sum (localidades.habitantes) AS hab FROM provincias, localidades WHERE localidades.codprov = provincias.codprob GROUP BY provincias.comunidad HAVING SUM (localidades.habitantes) < (SELECT AVG (hab) FROM (SELECT provincias.comunidad, sum (localidades.habitantes) AS hab FROM provincias,localidades WHERE localidades.codprov = provincias.codprov GROUP BY provincias.comunidad) AS t1)

3. Obtener el nombre de las localidades con un número de habitantes por debajo de la media de todas las localidades.
SELECT nombre FROM localidades WHERE habitantes < (SELECT AVG (habitantes) FROM localidades)

4. Obtener las localidades accesibles a través de un solo tramo desde la localidad de Cuenca.
SELECT nombre FROM localidades WHERE codloc IN (SELECT codloca FROM tramos WHERE codlocb IN (SELECT codloc FROM localidades WHERE nombre = 'Cuenca')) UNION SELECT nombre FROM localidades WHERE codloc IN (SELECT codlocb FROM tramos WHERE codloca IN (SELECT codloc FROM localidades WHERE nombre = 'Cuenca'))

5. Obtener el nombre de las localidades de la comunidad CLM.
SELECT nombre FROM localidades WHERE codprov IN (SELECT codprov FROM provincias WHERE comunidad = 'CLM')

6. Obtener el número de habitantes de cada provincia, ordenando por comunidad y provincia.
SELECT SUM (localidades.habitantes) FROM localidades, provincias WHERE localidades.codprov = provincias.codprov GROUP BY provincias.nombrep, provincias.comunidad ORDER BY provincias.nombrep, provincias.comunidad

7. Obtener las comunidades que tienen de media una distancia superior a 30 kilómetros entre las localidades de su comunidad.

8. Obtener el nombre de las provincias con un censo inferior a 40000 habitantes.
SELECT nombrep FROM provincias, localidades WHERE localidades.codprov = provincias.codprov GROUP BY provincias.nombrep HAVING SUM (localidades.censo) < 40,000

9. Obtener localidades que no figuren en ninguno de los tramos o en los que no figure la distancia entre los nodos del tramo.
SELECT nombre FROM localidades WHERE codloc NOT IN (SELECT codloca FROM tramos UNION SELECT codlocb FROM tramos) OR codloc IN (SELECT codloca FROM tramos WHERE distancia IS NULL UNION SELECT codlocb FROM tramos WHERE distancia IS NULL)

No hay comentarios:

Publicar un comentario