0% encontró este documento útil (0 votos)
180 vistas5 páginas

Consultas SQL para Análisis de Datos

Este documento contiene varias consultas SQL sobre diferentes tablas como EMPLEADOS, PERSONAS, MASCOTAS, CURSOS, y VEHÍCULOS. Las consultas realizan funciones como seleccionar, filtrar, agrupar, ordenar, unir tablas y calcular estadísticas sobre los datos.
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 PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
180 vistas5 páginas

Consultas SQL para Análisis de Datos

Este documento contiene varias consultas SQL sobre diferentes tablas como EMPLEADOS, PERSONAS, MASCOTAS, CURSOS, y VEHÍCULOS. Las consultas realizan funciones como seleccionar, filtrar, agrupar, ordenar, unir tablas y calcular estadísticas sobre los datos.
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 PDF, TXT o lee en línea desde Scribd

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

También podría gustarte