Documentos de Académico
Documentos de Profesional
Documentos de Cultura
SQL Server 2008 - Sesión #4 - SubConsultas
SQL Server 2008 - Sesión #4 - SubConsultas
SUBCONSULTAS
Subconsulta correlacionada
danilo.rodriguez@fec.uni.edu.ni 1
Análisis y Diseño de Bases de Datos con Sql Server 2008
Se debe utilizar antes una combinación que una subconsulta, la combinación sería asi,
dando los mismos resultados:
Esta es la consulta utilizando el HAVING, que es la que deberíamos utilizar antes que
una subconsulta de simulación HAVING:
danilo.rodriguez@fec.uni.edu.ni 2
Análisis y Diseño de Bases de Datos con Sql Server 2008
select apellido,fecha_alt,salario
from emp as e
where not exists(select * from dept as o
where e.dept_no = o.dept_no)
Recomendaciones:
SUBCONSULTAS
1. Mostrar el número de empleado, el apellido y la fecha de alta del empleado más antiguo
de la empresa
2. Mostrar el número de empleado, el apellido y la fecha de alta del empleado más
modernos de la empresa.
3. Visualizar el apellido y el oficio de los empleados con el mismo oficio que Jiménez.
4. Queremos saber el apellido, oficio, salario y número de departamento de los empleados
con salario mayor que el mejor salario del departamento 30.
5. Mostrar el apellido, la función, sala o departamento de todos los empleados que trabajen
en la empresa.
6. Averiguar el salario de todos los empleados de la empresa, de forma que se aprecien las
diferencias entre ellos.
7. Mostrar apellidos y oficio de los empleados del departamento 20 cuyo trabajo sea el
mismo que el de cualquier empleado de ventas.
8. Mostrar los empleados que tienen mejor salario que la media de los directores, no
incluyendo al presidente.
9. Mostrar el apellido, función, salario y código de hospital de los empleados de la plantilla
que siendo enfermeros o enfermeras pertenecen al hospital SAN CARLOS.
10. Visualizar los datos de los hospitales que tienen personal (Doctores) de cardiología.
11. Visualizar el salario anual de los empleados de la plantilla del Hospital Provincial y
General.
12. Mostrar el apellido de los enfermos que nacieron antes que el Señor Miller.
danilo.rodriguez@fec.uni.edu.ni 3
Análisis y Diseño de Bases de Datos con Sql Server 2008
Variables
BUCLES
Nivel de instrucción:
Bloques BEGIN......END
Bloques IF.............ELSE
Construcciones WHILE
--BUCLES
Declare @n int
set @n = 0
while @n < 10
begin
if (@n % 2) = 0
select @n as Numero
set @n = @n + 1
end
danilo.rodriguez@fec.uni.edu.ni 4
Análisis y Diseño de Bases de Datos con Sql Server 2008
Nivel De fila
CASE expresion
WHEN valor1 THEN resultado1
ELSE resultadoN
END
CASE
WHEN verdadero THEN resultado1
ELSE resultado2
END
--CASE
DECLARE @N INT
SET @N = 1
WHILE (@N<100)
BEGIN
SELECT @N AS 'NUMERO', CASE
WHEN (@N % 2) = 1 THEN
'IMPAR'
ELSE
'PAR'
END AS 'TIPO'
SET @N = @N + 1
danilo.rodriguez@fec.uni.edu.ni 5
Análisis y Diseño de Bases de Datos con Sql Server 2008
END
EJEMPLO:
Esto se puede utilizar también para inicializar variables. Es el mismo caso pero
utilizando el CASE para inicializar una variable.
danilo.rodriguez@fec.uni.edu.ni 6
Análisis y Diseño de Bases de Datos con Sql Server 2008
CONVERT se usa para convertir el número a una cadena de dos caracteres y lo concatenamos
con @tipo.
CAST realiza lo mismo que CONVERT
Ponemos Cast y Convert para poder concatenar un valor de tipo Int con un valor de tipo Char,
sino intentaría sumarlos y daría error.
danilo.rodriguez@fec.uni.edu.ni 7
Análisis y Diseño de Bases de Datos con Sql Server 2008
2. Debemos hacer recortes de salario en la empresa, para ello debemos saber a qué personas
recortaremos el sueldo, cuales se mantendrán y cuales subiremos el puesto. Utilizar todos
los empleados de la empresa (Plantilla y Empleados) cuando el salario sea menor de
100000, Subiremos sueldo, cuando esté entre 100000 y 250000 lo mantendremos y
cuando sea superior, lo bajaremos.
4. Queremos cambiar de localidad en Barcelona, para ello tenemos que saber qué
empleados cambiarían de localidad y cuáles no. Combinar tablas y mostrar el nombre del
departamento junto a los datos del empleado.
8. Mostrar todas las camas que existen para cada hospital y cada sala. Mostraré el nombre
del hospital, las salas y su número de camas. Si no hubiese camas para algún hospital las
dejaré a 0. También mostraré que son muchas camas cuando sean más de 90, buen
número cuando sean mayores de 40 y pocas camas para las demás.
9. Seleccionar qué empleados están dentro de la media y cuales están por debajo de la
media, mostrando el apellido, oficio, salario, comisión y el nombre de los departamentos.
No dejar ningún campo a NULL.
danilo.rodriguez@fec.uni.edu.ni 8