Bases de Datos Espaciales 1
TALLER DE CONSULTAS ESPACIALES CASO DE ESTUDIO: BOGOTA
1. Muestre la localidad con mayor área.
SELECT locnombre "Localidad", SDO_GEOM.SDO_AREA(geometry, 0.005) "Area" FROM localidad
WHERE SDO_GEOM.SDO_AREA(geometry, 0.005) = (SELECT
MAX(SDO_GEOM.SDO_AREA(geometry, 0.005)) FROM localidad );
2. Muestre las localidades y el número total de parques/escenarios que hay en ella.
SELECT [Link] "Localidad", COUNT([Link]) "Total Parques" FROM localidad loc
INNER JOIN parques par ON par.id_localid = [Link]
GROUP BY [Link]
ORDER BY COUNT([Link]) DESC;
3. Muestre las localidades y el número total de colegios que hay en ella.
Bases de Datos Espaciales 2
SELECT [Link] "Localidad", COUNT([Link]) "Total Colegios" FROM localidad loc
INNER JOIN colegios col ON col.cod_loca = [Link]
GROUP BY [Link]
ORDER BY COUNT([Link]) DESC;
4. Muestre los colegios que no están asociados a ninguna localidad.
SELECT nombre_est from colegios
WHERE objectid NOT IN (
SELECT [Link]
FROM localidades D, colegios C
WHERE SDO_RELATE([Link], [Link],'mask=ANYINTERACT') = 'TRUE');
5. Muestre la localidad con mayor número de colegios.
SELECT Loca "Localidad", tot "Total Colegios" FROM (
SELECT [Link] Loca, COUNT([Link]) tot
Bases de Datos Espaciales 3
FROM localidad loc
INNER JOIN colegios col ON col.cod_loca = [Link]
GROUP BY [Link]
ORDER BY tot DESC
)WHERE ROWNUM = 1;
6. Muestre la localidad con menor número de colegios.
SELECT Loca "Localidad", tot "Total Colegios" FROM (
SELECT [Link] Loca, COUNT([Link]) tot
FROM localidad loc
INNER JOIN colegios col ON col.cod_loca = [Link]
GROUP BY [Link]
ORDER BY tot ASC
)WHERE ROWNUM = 1;
7. Muestre las localidades que son vecinas de la localidad "PUENTE ARANDA".
SELECT locnombre "Localidad"
FROM localidad
WHERE locnombre <> 'PUENTE ARANDA' AND
SDO_GEOM.SDO_DISTANCE((SELECT geometry FROM localidad
WHERE locnombre = 'PUENTE ARANDA'),geometry, 0.005) = 0
ORDER BY locnombre;
Bases de Datos Espaciales 4
8. Mostrar los parques/escenarios con mayor perímetro.
SELECT parque "Nombre Parque", perimetro "Perimetro" FROM (
SELECT par.nombre_par parque,
MAX(SDO_GEOM.SDO_LENGTH([Link], 0.005)) perimetro
FROM localidad loc
INNER JOIN parques par ON par.id_localid = [Link]
GROUP BY par.nombre_par
ORDER BY perimetro DESC
)WHERE ROWNUM = 1;
9. Muestre las localidades por donde pasa la ciclovía más larga.
--- No encuentra la relación entre las tablas ciclovía y localidad
10. Muestre las localidades que tienen mayor número de jardines infantiles.
SELECT [Link] "Localidad", COUNT([Link]) "Jardines Infantiles"
FROM localidad loc
INNER JOIN colegios col ON col.cod_loca = [Link]
WHERE nombre_est LIKE '%JARDIN INFANTIL%'
GROUP BY [Link]
Bases de Datos Espaciales 5
ORDER BY COUNT([Link]) DESC;
11. Muestre las localidades que tienen más colegios y por donde no pasa ninguna ciclovía.
--- No encuentra la relación entre las tablas ciclovía y localidad
12. Muestre los colegios que tienen mayor distancia entre sí.
SELECT C1.nombre_SED nombre1,C2.nombre_SED nombre2,
MAX(SDO_GEOM.SDO_DISTANCE([Link], [Link], 0.005)) Distancia
FROM colegios C1, colegios C2
GROUP BY c1.nombre_SED, c2.nombre_sed
ORDER BY MAX(SDO_GEOM.SDO_DISTANCE([Link], [Link], 0.005)) DESC;
Bases de Datos Espaciales 6
13. Muestre los barrios que no contienen ningún Hotel. (Barrios que no contienen ningún jardin)
SELECT DISTINCT barrio__ge barrio
FROM colegios
WHERE nombre_est NOT LIKE '%JARDIN%';
14. Muestre los colegios que estén dentro de un rango de 5 km del Estadio Nemesio Camacho El
Campin. (No se puede operar por el sistema de coordenadas)
SELECT nombre_sed "colegio"
FROM colegios
WHERE SDO_GEOM.SDO_DISTANCE((SELECT geometry FROM parques
Bases de Datos Espaciales 7
WHERE nombre_par LIKE '%ESTADIO NEMECIO CAMACHO EL CAMPIN%'),geometry,
0.005) < 5
ORDER BY nombre_sed;
15. Muestre la localidad con mayor número de parques.
SELECT localidad "Localidad", total "Cantidad Parques" FROM (
SELECT [Link] localidad, COUNT([Link]) total FROM localidad loc
INNER JOIN parques par ON par.id_localid = [Link]
GROUP BY [Link]
ORDER BY COUNT([Link]) DESC
)WHERE ROWNUM = 1;
16. Muestre la localidad que tengan mayor número de jardines infantiles, pero menores colegios
con discapacidad cognitiva.
SELECT localidad "Localidad", jardin "Cantidad Jardines" FROM (
SELECT [Link] localidad, COUNT([Link]) jardin FROM localidad loc
INNER JOIN colegios col ON col.cod_loca = [Link]
WHERE nombre_est LIKE '%JARDIN INFANTIL%' AND discapacid LIKE '%COGNITIVA%'
Bases de Datos Espaciales 8
GROUP BY [Link]
ORDER BY COUNT([Link]) DESC
)WHERE ROWNUM = 1;
17. Mostrar los parques/escenarios que en el nombre tengan la palabra “Desarrollo” y que estén en
la localidad de Engativa.
SELECT par.nombre_par parque
FROM parques par INNER JOIN localidades loc ON [Link] = par.id_localid
WHERE par.nombre_par LIKE '%DESARROLLO%'
AND [Link] = 'ENGATIVA'
18. Mostrar los colegios que tengan el mismo nombre en diferentes localidades.
SELECT colegio FROM(SELECT [Link], a.cod_loca, a.nombre_est colegio,[Link],
b.cod_loca, b.nombre_est
FROM colegios a, colegios b
WHERE a.nombre_est= b.nombre_est
AND a.cod_loca<>b.cod_loca
Bases de Datos Espaciales 9
AND [Link]=(SELECT MAX(objectid) FROM colegios
WHERE nombre_est=a.nombre_est));