Está en la página 1de 5

INTRODUCCIÓN AL LENGUAJE SQL

UTILIZANDO POSTGRESQL

Clase 5 y 6: Ejercicio Evaluativo


Preguntas
1. Escriba una consulta para ver la cantidad de alumnos por tipo de alumno. Los campos a mostrar son:

c_alumno - total alumnos

SELECT c_alumno, count (total) FROM ra2014.alumnos GROUP BY c_alumno;

2. A la consulta del punto anterior, agregarle la descripción para el tipo de alumno:

c_alumno – descripción tipo de alumno - total alumnos

SELECT c_alumno, descripcion, sum(total)

FROM ra2014.alumnos a

JOIN codigos.alumno_tipo USING (c_alumno)

GROUP BY c_alumno, descripcion

¿Cuál es el tipo de alumno que más alumnos tiene? Escriba la consulta.

SELECT c_alumno, descripcion, max(total)

FROM ra2014.alumnos a

JOIN codigos.alumno_tipo USING (c_alumno)

GROUP BY c_alumno, descripcion

3. Escriba una consulta para ver la cantidad de alumnos por localización (cue – anexo). Los campos a
mostrar son:

cue - anexo - total alumnos

SELECT cue, anexo, sum(total)

FROM ra2014.establecimiento

JOIN ra2014.localizacion USING (id_establecimiento)

INTRODUCCIÓN AL LENGUAJE SQL UTILIZANDO POSTGRESQL, AÑO 2018, PÁGINA 2


JOIN ra2014.oferta_local USING (id_localizacion)

JOIN ra2014.plan_dictado USING (id_oferta_local)

JOIN ra2014.alumnos USING (id_plan_dictado)

GROUP BY cue, anexo

4. A la consulta del punto anterior, filtrarla para que solo muestre aquellas localizaciones que tengan
más de 20 alumnos. Escriba la consulta.

SELECT cue, anexo, sum(total)


FROM ra2014.establecimiento
JOIN ra2014.localizacion USING (id_establecimiento)
JOIN ra2014.oferta_local USING (id_localizacion)
JOIN ra2014.plan_dictado USING (id_oferta_local)
JOIN ra2014.alumnos USING (id_plan_dictado)
WHERE total >20
GROUP BY cue, anexo
5. Escriba una consulta para ver la cantidad de alumnos por turno. Los campos a mostrar son:

descripción turno - total alumnos – alumnos varones – alumnos mujeres

SELECT descripcion, sum(total), sum(varones), sum(total)- sum(varones)


FROM ra2014.alumnos
JOIN ra2014.seccion USING (id_seccion)
JOIN codigos.turno_tipo USING (c_turno)
GROUP BY descripcion
6. A la consulta del punto anterior, filtrarla para ver sólo aquellos turnos en donde la cantidad de
varones sea mayor a la de mujeres. Escriba la consulta.

SELECT descripcion, sum(total), sum(varones), sum(total)- sum(varones)


FROM ra2014.alumnos

INTRODUCCIÓN AL LENGUAJE SQL UTILIZANDO POSTGRESQL, AÑO 2018, PÁGINA 3


JOIN ra2014.seccion USING (id_seccion)
JOIN codigos.turno_tipo USING (c_turno)
WHERE varones > total - varones
GROUP BY descripcion
7. Escriba una consulta para generar un listado de establecimientos cuyos nombres comiencen con la palabra
“Secundario” (sin tener en cuenta mayúsculas y minúsculas).

SELECT *
FROM ra2014.establecimiento
WHERE nombre ILIKE 'SECUNDARIO%'
¿Cuánto establecimientos son?

SELECT count(nombre)
FROM ra2014.establecimiento
WHERE nombre ILIKE 'SECUNDARIO%'
8. Escriba una consulta para generar un listado de localizaciones con los siguientes campos:

 CUE Anexo (en un solo campo)


SELECT cue||anexo
FROM ra2014.establecimiento
JOIN ra2014.localizacion USING (id_establecimiento)

 Código de la provincia (extraído a partir del campo CUE, sabiendo que está representado por los dos
primeros dígitos)
SELECT substr(cue,1,2), cue
FROM ra2014.establecimiento

 Nombre (todas las letras en mayúsculas)


SELECT cue, anexo, cue||anexo, upper(a.nombre)
FROM ra2014.establecimiento a
JOIN ra2014.localizacion USING (id_establecimiento)

 Código de área del teléfono (sin mostrar los ceros de la izquierda)

INTRODUCCIÓN AL LENGUAJE SQL UTILIZANDO POSTGRESQL, AÑO 2018, PÁGINA 4


 Email (quitando los espacios que pudieran existir al inicio y al final)
SELECT id_responsable, apellido, telefono, nro_documento, email, trim(both from email)
FROM ra2014.responsable

9. Escriba una consulta para ver la cantidad de caracteres del título que más caracteres tiene. ¿Cuál es
esa cantidad de caracteres?

SELECT descripcion, char_length(descripcion)


FROM ra2014.titulo
10. Escriba una consulta para ver qué porcentaje representan los alumnos repitientes varones respecto al
total de alumnos repitientes agrupando por el id de sección.

SELECT id_seccion, a.descripcion,total::real, varones::real, varones/total::real*100


FROM ra2014.alumnos
JOIN codigos.alumno_tipo a USING (c_alumno)
JOIN ra2014.SECCION USING (id_seccion)
WHERE total >0
GROUP BY id_seccion,c_alumno, a.descripcion, total, varones
HAVING c_alumno=2;
Ayuda: Hay que convertir el campo varones y total a un tipo de dato numérico que acepte decimales
para poder obtener un resultado con decimales y hay que agregar un filtro para que no se contemplen
aquellos casos donde el total de alumnos es cero, ya que si no surge un error al querer dividir por cero.

INTRODUCCIÓN AL LENGUAJE SQL UTILIZANDO POSTGRESQL, AÑO 2018, PÁGINA 5

También podría gustarte