Está en la página 1de 6

ACTIVIDAD DE CONSULTAS SQL GENERAL

Las consultas se desarrollaran con base al archivo BD_GENERAL.sql (las consultas se


pueden realizar en MysqlWorkbeanch)

CONSULTAS SQL
Consultas simples.
1. Hallar una consulta que devuelva el nombre, apellidos y la fecha de nacimiento
de aquellos empleados que cobren ms 1350 euros.
2. Hallar una consulta que devuelva el nombre, apellidos y la fecha de nacimiento
de aquellos empleados que cobren menos 1350 euros.

A. Funciones de agregados y totalizacin de datos


1. Construya una consulta que devuelva en la misma fila el salario mximo y
mnimo de entre todos los empleados. Renombre las cabeceras de resultados
con un ttulo que deje claro que datos se estn mostrando.
2. Construya una consulta que responda a lo siguiente: Qu cuesta pagar a
todas las mujeres en total? Renombre la cabecera del resultado con un ttulo que
deje claro que datos se est mostrando.

B. Agrupacin de datos
1. Construya una consulta que devuelva el salario medio, mximo y mnimo de los
empleados agrupados por sexo.
2. Construya una consulta que devuelva cuantos perros y cuantos gatos han
pasado por el centro y ya no estn.
3. Construya una consulta que devuelva cuantos perros machos hay actualmente
en el centro agrupado por ubicacin.
4. Con la ayuda del filtro DISTINCT, construya una consulta que devuelva las
diferentes especies que hay actualmente en cada jaula o ubicacin del centro.

C. Filtrar clculos de totalizacin


1. Obtenga una lista de los miembros de la tabla PERSONAS, donde primero
aparezcan los rubios, despus los altos y finalmente los que llevan gafas. Deben
hacerse de manera que la primera persona de las lista, si la hay, ser rubia, alta
y sin gafas, y la ltima, si la hay, no ser ni rubia ni alta y no llevara gafas.
2. Obtenga el nmero actual de ejemplares de cada ubicacin del centro de mascotas
que tengan dos o ms ejemplares ordenado de mayor a menor por nmero de
ejemplares y en segundo trmino por ubicacin.

D. El operador Like y el valor Null


1. Qu empleados se apellidan Calvo?
2. Considerando que en la tabla VEHICULOS el campo PROX_ITV guarda la fecha
de la prxima ITV que de pasar cada vehculo.
Qu vehculos que nunca han pasado la ITV deben pasar la primera revisin
durante el ao 2011?.
E. Producto cartesiano
1. Realice una consulta que devuelva las combinaciones posibles entre los pantalones
y los calzados, sin ms columnas que la descripcin de cada prenda. Use alias de
cada tabla para indicar a que tabla pertenece cada campo de la clusula
SELECT.

F. Abstraccin de tabla
1. Construya una consulta en SQL que devuelva el peso medio de todas las mudas
confeccionadas entre camisas y pantalones. Modifique la consulta para obtener el
mismo resultado entre camisa, pantalones y calzados.
2. Construya una consulta SQL que devuelva el peso medio de todas las mudas
confeccionadas entre camisas y pantalones agrupados por camisa. Modifique la
consulta de manera que devuelva el mismo resultado pero solo muestre los grupos
cuyo peso medio sea superior a 850 gramos.
3. Construya una consulta en SQL que 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.
4. Construya una consulta que devuelva la lista de prendas de una maleta que
contiene todas las camisas, pantalones y calzados.

G. Relaciones, Claves primarias y forneas.


1. Construya una consulta que devuelva los cursos que se ha matriculado el alumno
con identificador 1.
Modifique la anterior consulta para que devuelva los nombres y los apellidos de
los alumnos y los cursos en que se han matriculado, tales como que el nombre
de pila del alumno contenga una E.
2. Cuntos cursos imparten cada profesor? Construya una consulta que responda
a la cuestin de modo que el resultado muestre el nombre completo del profesor
acompaado del nmero de imparte.
3. Cuntos alumnos hay matriculado en cada uno de los cursos? Construya una
consulta que responda a esta cuestin de modo que el resultado muestre
el ttulo del curso acompaado del nmero de alumnos matriculados.
Modifique la consulta anterior de modo que muestre aquellos cursos que el
nmero de alumnos matriculados sea exactamente de dos alumnos.

H. Reunin interna y externa


1. Construya una consulta que resuelva el nmero de cursos que imparte cada
profesor usando la clusula INNER JOIN.
2. Realice una consulta entre las tablas CURSOS, ALUMNOS Y ALUMNOS_CURSOS
de modo que aparezcan los alumnos matriculados en cada curos pero mostrando
todos los cursos aunque no tengan alumnos matriculados.

I. Insert, update, delete


1. Construya una instruccin de insercin en la tabla CURSOS para guardar un
nuevo curso de pintura y asgnele una clave que no entre en conflicto con las
existentes. Posteriormente construya la instruccin para eliminar de la tabla el
registro que acaba de crear.
2. La actualizacin del salario de la tabla EMPLEA2 donde se incrementa un 2%
para empleados con sueldos inferior a 3000 euros. Sin embargo, no parece muy
justo que un empleado con un sueldo de 3000 euros no reciba incremento alguno
y otros que rozan los 3000 euros pero no llegan reciban el incremento superando
el importe de corte una vez aplicado dicho incremento. Construya una instruccin
de actualizacin, que debera ejecutar previamente a la actualizacin de sueldos,
de mod0o que evite que para estos empleados el sueldo tras el incremento sea
superior a 3000. Para ello la instruccin que se le pide debe actualizar el salario
de los empleados afectados a 3000 euros, para cuando se realice el incremento
no se les aplique la subida puesto que su sueldo ser entonces de 3000 euros
justos.

J. Funciones nativas
1. Realice una consulta que devuelva la media de salarios de la tabla
EMPLEADOS agrupados por sexo. Redondee la media de salario a un solo
decimal y codifique la columna sexo par que parezca el literal HOMBRE y
MUJERES en lugar de H y M. No olvide bautizar las columnas con un alias
apropiado.
2. Realice una consulta sobre la tabla EMPLEADOS que devuelva el nombre,
los apellidos, la fecha de nacimiento y la edad actual en aos de cada
empleado. Para aquellos empleados con 18 aos o ms. Nota: la edad de
un empleados en aos es el nmero de das transcurridos dese el nacimiento
divido entre los 35 das que tiene un ao.
3. Realice una consulta sobre la vehculos que devuelva el nmero de vehculos
que deben pasar la revisin agrupados por el ao en que deben pasarla.

K. Subconsultas en clausula Select.


1. Resuelva en una sola consulta usando subconsulta en el clausula SELECT, el
porcentaje de individuos que contiene cada ubicacin del centro de mascotas
versus el total de mascotas en el centro. No considere mascotas dadas de baja.
2. Realice el mismo ejercicios anterior pero discriminando por especie, es decir, el
porcentaje de gatos o perros que contiene cada ubicacin versus el total de
gatos o perros que hay en el centro.

L. Subconsulta en clausula From.


1. Resuelva en una sola consulta usando una subconsulta en la clusula FROM,
el porcentaje de individuos que contiene cada ubicacin del centro de mascota
versus el total de mascotas en el centro. No considere mascotas dada de baja.
2. Realice el mismo ejercicio anterior pero discriminando por especie, es decir, el
porcentaje de gatos o perros que contiene cada ubicacin versus el total de
gatos o de perros que hay en el centro.

M. Subconsultas de clausula Where


1. Construya una consulta que devuelva todos los empleados salvo el ms joven
y el ms mayor.
2. Construya una consulta que devuelva los profesores que no imparten ningn
curso. Resuelva el problema de dos formas: use el operador IN en uno de ellos
el operador EXISTS en el otro
3. Construya una consulta que devuelva la ubicacin del centro de mascotas
con mayor nmero de ejemplares. En el resultado debe aparecer adems de la
ubicacin, la especie y el nmero de ejemplares de la ubicacin. No considere
mascotas dadas de baja.

N. Vistas.
1. Construya una vista que codifique el campo ESPECIE, SEXO y ESTADO de la
tabla MASCOTA con ayuda de la funcin IF. El resto de campos no se debe
tratar, pero deben formar parte de la vista. Ponga un nombre a la vista para
que cuando se reutilice en las consultas, denote de que se trata de una
vista y no de una tabla.

O. Subconsultas update.
1. Supongamos que usted mantiene una BD en la que se ha detectado errores
en los datos. El problema radica en un proceso automtico ha resuelto mal el
precio de algunos artculos y les ha asignado un cero como precios de venta.
Tras analizar el problema se ha decidido que se recalcular el precio de estos
articulo asignndole el precio medio de articulo tomando como fuentes las facturas
del ao 2013. Por tanto, se debe modificar el campo PRECIO de la tabla
ARTICULO cuyo campo PRECIO vale cero, es decir, los errneos. El nuevo valor se
asignara tomando el valor medio del campo PRECIO de la tabla LINEAS_FACTURAS
del artculo a tratar. Solo deben considerarse facturas del ao 2013. Si un artculo
se ha facturado varias veces a un mismo precios solo se considerar una sola vez
para calcular la media. Si el artculo no se ha facturado nunca durante el
ao 2013 debe guardarse cero.
2. Construya una instruccin UPDATE que realice la actualizacin del precio de los
artculos con precio cero segn la especificacin anterior.
Campos que necesita conocer de cada una de las tablas.

FACTURA: ID_FACTURA, FECHA_FACTURA


LINEAS_FACTURA: ID_FACTURA, ID_ARTICULO, PRECIO
ARTICULOS: ID_ARTICULO, PRECIO.
P. Funciones y Procedimientos Almacenados.
1. Se ha construido la funcin MAYOR, que recibe dos entero como parmetros de
entrada y devuelve el mayor de los dos valores como resultado de salida.

Crate function MAYOR (P_VALOR_1, int, P_VALOR_2 int) returns int

BEGIN
Declare V_RETORNO int;

IF P_VALOR_1 > P_VALOR_2 THEN

SET V_RETORNO = P_VALOR_1;

ELSE
SET V_RETORNO = P_VALOR_2;

END IF

Returns V_RETORNO;
END;

Esta funcin contiene un error, es decir no trata posibilidad de que los parmetros
de entrada contengan un valor nulo, si el primer parmetro contiene un valor nulo,
la condicin IF no se cumplir y la funcin retornara el valor del segundo parmetro
como el mayor de los dos. Esto no es correcto, si uno de los parmetros contiene
un valor nulo el resultado de la funcin MAYOR debe devolver un valor nulo o
indeterminado, puesto que no se puede determinar cul es el mayor de los dos.
Modifique la funcin MAYOR, para si cualquiera de los dos parmetros de entrada
contienes un valor nulo, la funcin retorne un valor nulo o indeterminado como
resultado de la operacin.

2. Construya la funcin en MySql:

CREATE FUNCTION ES_PAR (P_VALOR int) RETURNS CHAR(2)

BEGIN

-----------------------------
END;

La funcin debe devolver SI si el nmero es par y NO en caso contrario. Puede


usar la funcin nativa MOD (divisor, dividendo) que devuelve el modulo o resto de
una divisin. Recuerde que si dividimos un numero entero entre dos y el resto es
cero, el nmero es par, en caso contrario es impar.