0% encontró este documento útil (0 votos)
228 vistas9 páginas

Consultas SQL sobre Localidades en Bogotá

Este documento presenta 18 consultas SQL sobre una base de datos espacial de Bogotá con tablas de localidades, colegios y parques. Las consultas incluyen mostrar la localidad con mayor área, el número de parques y colegios por localidad, colegios no asociados a localidades, y localidades vecinas entre otras.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
228 vistas9 páginas

Consultas SQL sobre Localidades en Bogotá

Este documento presenta 18 consultas SQL sobre una base de datos espacial de Bogotá con tablas de localidades, colegios y parques. Las consultas incluyen mostrar la localidad con mayor área, el número de parques y colegios por localidad, colegios no asociados a localidades, y localidades vecinas entre otras.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

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));

También podría gustarte