Lección 2
Devuelve nombre, apellido y f. nacimiento personas que COBRE MAS DE 1350 $
select NOMBRE , APELLIDOS , F_NACIMIENTO
from EMPLEADOS
where SALARIO > 1350
Lección 5
Devuelve personas que son altas o bien, son rubias con gafas
select NOMBRE
from PERSONAS
where ALTA = 'S' or (RUBIA = 'S' and GAFAS = 'S')
Devuelve empleados que son mujeres y cobran mas de 1300 $
select NOMBRE,APELLIDOS
from EMPLEADOS
where SEXO = 'M'
and SALARIO > 1300
Lección 6
Devuelve el SALARIO MEDIO de los empleados que son [Link] la cabecera resultado
select avg(SALARIO) as MEDIA_SALARIO_HOMBRES
from EMPLEADOS
where SEXO = 'H'
Devuelve en la misma fila el SALARIO MAXIMO Y MINIMO de entre todos los empleados
select min(SALARIO) as SALARIO_MINIMO, max(SALARIO) as SALARIO_MAXIMO
from EMPLEADOS
Construya una consulta que responda: ¿Que cuesta pagar a todas las mujeres en total?
select sum(SALARIO) as TOTAL_SALARIO_MUJERES
from EMPLEADOS
where SEXO = 'M
Lección 7
Devuelve el salario MEDIO, máximo y mínimo de los empleados AGRUPADO POR SEXO
select SEXO , avg(SALARIO) as SALARIO_MEDIO ,
min(SALARIO) as SALARIO_MINIMO ,
max(SALARIO) as SALARIO_MAXIMO
from EMPLEADOS
group by SEXO
Devuelve CUANTOS PERROS y CUANTOS GATOS han pasado por el centro y YA NO ESTÁN EN EL
CENTRO
select ESPECIE , count(*) as BAJAS
from MASCOTAS
where ESTADO = 'B'
group by ESPECIE
Devuelve CUANTOS PERROS MACHOS HAY actualmente en el AGRUPADO POR UBICACION.
select UBICACION , count(*) as PERROS_MACHO
from MASCOTAS
where ESTADO = 'A'
and ESPECIE = 'P'
and SEXO = 'M'
group by UBICACION
Lección 8
Devuelve LAS UBICACIONES del centro de mascotas QUE TIENE ENTRE 2 y 3 EJEMPLARES.
select UBICACION , count(*) as EJEMPLARES
from MASCOTAS
where ESTADO = 'A'
group by UBICACION
having count(*) between 2 and 3
Lección 9
Obtenga una lista de las personas de la tabla PERSONAS, donde primero aparezcan las rubias,
después las altas, y finalmente las que llevan gafas. De manera que la primera persona de la lista,
si la hay, será rubia alta y sin gafas, y la última, si la hay, no será rubia ni alta y llevará gafas.
select *
from PERSONAS
order by RUBIA desc, ALTA desc, GAFAS
Obtenga el número actual de ejemplares de cada ubicación del centro de mascotas, que tengan
dos o más ejemplares ordenado de mayor a menor por número de ejemplares y en segundo
término por ubicación.
select UBICACION, count(*) as EJEMPLARES
from MASCOTAS
where ESTADO = 'A'
group by UBICACION
having count(*) > 1
order by count(*) desc, UBICACION
Lección 10
¿Qué empleados se apellidan Calvo?
select *
from EMPLEADOS
where APELLIDOS like '%calvo%'
Considerando que en la tabla VEHICULOS el campo PROX_ITV guarda la fecha de la próxima ITV
que ha de pasar cada vehículo:
¿Qué vehículos que nunca han pasado la ITV deben pasar la primera revisión durante el año 2011?
select *
from VEHICULOS
where PROX_ITV between '20110101' and '20111231'
and ULTI_ITV is null
Lección 12
Devuelva las COMBINACIONES posibles ENTRE los PANTALONES Y los CALZADOS, sin más
columnas que la descripción de cada prenda.
select [Link] , [Link]
from PANTALONES P , CALZADOS Z
Lección 13
Construya una consulta SQL que devuelva EL PESO MEDI ODE TODAS LAS MUDAS confeccionables
ENTRE CAMISAS Y PANTALONES.
select avg( C.PESO_GR + P.PESO_GR) PESO_MEDIO_MUDAS
from CAMISAS C , PANTALONES P
Devuelva el peso medio de todas las mudas confeccionables entre camisas y pantalones agrupado
por camisa. Modifique la consulta de manera que devuelva el mismo resultado pero de los grupos
que el peso medio es superior a 850 gramos
select [Link] , avg( C.PESO_GR + P.PESO_GR) PESO_MEDIO_MUDAS
from CAMISAS C , PANTALONES P
group by [Link]
having avg( C.PESO_GR + P.PESO_GR) > 850
Devuelva las combinaciones de las camisas con los pantalones de manera que: LA PRIMERA
CAMISA SE COMBINE CON TODOS LOS PANTALONES MENOS CON EL PRIMERO, la segunda camisa
se combine con todos los pantalones menos con el segundo, y así sucesivamente.
select *
from CAMISAS C , PANTALONES P
where C.ID_CAMISA != P.ID_PANTALON
Devuelva la lista de prendas de una maleta que contiene todas las camisas, pantalones y calzados.
select concat('Camisa de ',CAMISA) as PRENDA
from CAMISAS
union all
select concat('Pantalón de ',PANTALON)
from PANTALONES
union all
select concat('Calzado: ',CALZADO)
from CALZADOS
Lección 14
Devuelva los cursos en que se ha matriculado el alumno con identificador 1
select [Link] CURSO
from ALUMNOS_CURSOS AC, CURSOS C
where AC.ID_CURSO = C.ID_CURSO
and AC.ID_ALUMNO = 1
¿Cuantos cursos imparte cada profesor? Construya una consulta que responda a esta cuestión de
modo que el resultado muestre el nombre completo del profesor acompañado del número de
cursos que imparte
select [Link], [Link] , count(1) CURSOS
from PROFESORES P, CURSOS C
where P.ID_PROFE = C.ID_PROFE
group by [Link], [Link]
¿Cuántos alumnos hay matriculados en cada uno de los cursos? Construya una consulta que
responda a esta cuestión de modo que el resultado muestre el título del curso acompañado del
número de alumnos matriculados.
Modifique la anterior consulta de modo que muestre aquellos cursos que el número de alumnos
matriculados sea exactamente de dos alumnos.
select [Link] CURSO, count(1) ALUMNOS
from ALUMNOS_CURSOS AC, CURSOS C
where AC.ID_CURSO = C.ID_CURSO
group by [Link]
having count(1) = 2
Lección 15
Construya una consulta que resuelva el número de cursos que imparte cada profesor usando la
cláusula INNER JOIN
select [Link], [Link] , count(1) CURSOS
from PROFESORES P inner join CURSOS C
on P.ID_PROFE = C.ID_PROFE
group by [Link], [Link]
Realice una consulta entre las tablas CURSOS, ALUMNOS y ALUMNOS_CURSOS de modo que
aparezcan los alumnos matriculados en cada curso pero mostrando todos los cursos aunque no
tengan alumnos matriculados.
select [Link] CURSO, [Link],[Link]
from (ALUMNOS_CURSOS AC inner join ALUMNOS A
on AC.ID_ALUMNO = A.ID_ALUMNO) right join CURSOS C
on AC.ID_CURSO = C.ID_CURSO
Lección 17
Devuelva la media de salarios de la tabla EMPLEADOS agrupado por sexo. Redondee la media de
salarios a un solo decimal y decodifique la columna sexo para que aparezca el literal HOMBRES y
MUJERES en lugar de H y M. No olvide rebautizar las columnas con un alias apropiado.
select if(SEXO='M','MUJERES','HOMBRES') SEXO , round(avg(SALARIO),1) MEDIA
from EMPLEADOS
group by if(SEXO='M','MUJERES','HOMBRES')
Sobre la tabla EMPLEADOS que devuelva el nombre, los apellidos, la fecha de nacimiento y la edad
actual en años de cada empleado. Para aquellos empleados con 18 años o más.
Nota: la edad de un empleado en años es el número de días transcurridos desde el nacimiento
dividido entre los 365 días que tiene un año.
select NOMBRE, APELLIDOS, F_NACIMIENTO, truncate( datediff(current_date,f_nacimie
nto) / 365 , 0) EDAD
from EMPLEADOS
where truncate( datediff(current_date,f_nacimiento) / 365 , 0) >= 18
Realice una consulta sobre la tabla vehículos que devuelva el número de vehículos que deben
pasar la revisión agrupado por el año en que deben pasarla.
select date_format(PROX_ITV,'%Y') PERIODO_ITV, count(1) VEHICULOS
from VEHICULOS
group by date_format(PROX_ITV,'%Y')