0% encontró este documento útil (0 votos)
50 vistas6 páginas

Ejercicios SQL Server Resueltos

El resumen realiza las siguientes operaciones sobre las tablas de una base de datos: 1) da de alta un nuevo empleado y departamento, 2) modifica la ubicación de un departamento, 3) da de alta dos nuevos empleados, 4) incrementa los salarios de los empleados, 5) incrementa el salario de los empleados nocturnos, y 6) realiza varias consultas y modificaciones adicionales 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 DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
50 vistas6 páginas

Ejercicios SQL Server Resueltos

El resumen realiza las siguientes operaciones sobre las tablas de una base de datos: 1) da de alta un nuevo empleado y departamento, 2) modifica la ubicación de un departamento, 3) da de alta dos nuevos empleados, 4) incrementa los salarios de los empleados, 5) incrementa el salario de los empleados nocturnos, y 6) realiza varias consultas y modificaciones adicionales 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 DOCX, PDF, TXT o lee en línea desde Scribd

1.

Dar de alta con fecha actual al empleado Jose Escriche Barrera como
programador perteneciente al departamento de [Link] un salario base
de 70000 pts/mes y no cobrara comision, ¿qué dificultad plantea el alta de este
empleado? ¿Cómo podria solucionarse ?

INSERT INTO DEPT(DEPT_NO,DNOMBRE,LOC)


VALUES(60,'INFORMATICA','MADRID')

INSERT INTO
EMP(EMP_NO,APELLIDO,OFICIO,FECHA_ALT,SALARIO,COMISION,DEPT_NO
)
VALUES(8596,'ESCRICHE','PROGRAMADOR','07/02/02',70000,0,60)

2. Se quiere dar de alta un departamento de informática situado en Fuenlabrada


(Madrid).

INSERT INTO DEPT(DEPT_NO,DNOMBRE,LOC)


VALUES(70,'INFORMATICA','FUENLABRADA')

3. El departamento de ventas por motivos de peseteros se traslada a Lerida,


realizar dicha modificación.

UPDATE DEPT SET LOC='LERIDA' WHERE DNOMBRE='VENTAS'

4. En el departamento anterior se dan de alta dos empleados: Julián Romeral y


Luis Alonso. Su salario base es de 80000 pts y cobrarán una comisión del 15% de
su salario.

INSERT INTO EMP(DEPT_NO,APELLIDO,SALARIO,COMISION,EMP_NO)


VALUES(30, 'ROMERAL',80000,80000*0.15,7500)

INSERT INTO EMP(DEPT_NO,APELLIDO,SALARIO,COMISION,EMP_NO)


VALUES(30, 'ALONSO',80000,80000*0.15,7600)

5. Modificar la comisión de los empleados de la empresa, de forma que todos


tengan un incremento del 10% del salario.

UPDATE EMP SET SALARIO=SALARIO*1.1

6. Incrementar un 5% el salario de los interinos de la plantilla que trabajen en el


turno de noche.
UPDATE PLANTILLA SET SALARIO = SALARIO*1.05 WHERE
FUNCION='INTERINO'
AND T='N'

7. Incrementar en 5000 pts el salario de los empleados del departamento de


ventas y del presidente, tomando en cuenta los que se dieron de alta antes que el
presidente de la empresa.

UPDATE EMP SET SALARIO = SALARIO + 5000


FROM EMP AS E
INNER JOIN DEPT AS D
ON E.DEPT_NO = D.DEPT_NO
WHERE FECHA_ALT < (SELECT FECHA_ALT FROM EMP WHERE OFICIO =
'PRESIDENTE')
AND [Link] = 'PRESIDENTE'
OR [Link] = 'VENTAS'

8. Se tienen que desplazar cien camas del Hospital SAN CARLOS para un
Hospital de Venezuela. Actualizar el número de camas del Hospital SAN CARLOS.

UPDATE HOSPITAL SET NUM_CAMA = NUM_CAMA-100 WHERE NOMBRE='SAN


CARLOS'

9. Crear una tabla llamada Mujeres e insertar los enfermos con este sexo.

CREATE TABLE MUJERES


(
Inscripcion INT NOT NULL,
Apellido VARCHAR(50) NULL,
Direccion VARCHAR(50) NULL,
Fecha_Nac VARCHAR(50) NULL,
S VARCHAR(2) NULL,
NSS INT NULL
)
GO
INSERT INTO MUJERES SELECT * FROM ENFERMO WHERE S = 'F'

10. Crear una tabla llamada Empleados e introducir todos los datos de la tabla
EMP en ella.

CREATE TABLE EMPLEADOS


(
Emp_No INT NOT NULL,
Apellido VARCHAR(50) NULL,
Oficio VARCHAR(50) NULL,
Dir INT NULL,
Fecha_Alt SMALLDATETIME NULL,
Salario NUMERIC(9,2) NULL,
Comision NUMERIC(9,2) NULL,
Dept_No INT NULL
)
GO
INSERT INTO EMPLEADOS SELECT * FROM EMP

11. Utilizar la tabla anterior. Subir el salario y la comisión en un millón de pesetas y


doscientas veinticinco mil pesetas respectivamente a los empleados que se dieron
de alta en este año.

UPDATE EMPLEADOS SET SALARIO = SALARIO + 1000000/12,


COMISION = COMISION + 225000/12 WHERE FECHA_ALT > '01/01/02'

12. Borrar de la tabla mujer al enfermo con número de inscripción igual a 64823.

DELETE FROM MUJERES WHERE INSCRIPCION= '64823'

13. Borrar todos los registros de la tabla Mujeres de la forma más rápida.

TRUNCATE TABLE MUJERES

14. Utilizar la tabla Empleados. Borrar todos los empleados dados de alta entre las
fechas 01/01/80 y 31/12/82.

DELETE FROM EMPLEADOS WHERE FECHA_ALT BETWEEN '01/01/80' AND


'31/12/82'

15. Modificar el salario de los empleados trabajen en la paz y esten destinados a


Psiquiatría. Subirles el sueldo 20000 ptas más que al señor Amigo R.

UPDATE PLANTILLA SET SALARIO =


(SELECT SALARIO + 20000 FROM PLANTILLA
WHERE APELLIDO = 'AMIGO R.')
FROM PLANTILLA AS P
INNER JOIN HOSPITAL AS H
ON H.HOSPITAL_COD = P.HOSPITAL_COD
INNER JOIN SALA AS S
ON S.SALA_COD = P.SALA_COD
WHERE [Link] = 'LA PAZ'
AND [Link] = 'PSIQUIÁTRICOS'

16. Borrar los empleados cuyo nombre de departamento sea producción.

DELETE FROM EMP


FROM EMP AS E
INNER JOIN DEPT AS D
ON E.DEPT_NO = D.DEPT_NO
WHERE [Link] = 'PRODUCCION'

1. Crear una consulta que muestre el nombre de empleado y el número de


empleados que cada uno de los empleados tiene a su cargo.

select [Link],COUNT([Link])
from employees jefe inner join employees empleado on
[Link]=[Link]
GROUP BY [Link]

2. Mostrar una consulta que muestre el nombre del producto, el número de


unidades totales vendidas, de aquel producto del que mas unidades haya vendido
la empresa.

select productname, unitsonorder


from products
where unitsonorder= (SELECT MAX(unitsonorder)from products )

3. Mostrar una consulta que obtenga el nombre de empleado, el número de pedidos


que ha tramitado, y el dinero que ha generado en la empresa, de todos aquellos
empleados que han tramitado pedidos. En caso de existir algún empleado que no
haya tramitado pedidos se mostrará en las columnas número de pedidos
y generado un valor nulo.

select [Link],COUNT( [Link] ),SUM( [Link] )


from employees empleado left outer join orders pedidos on
[Link]=[Link]
group by [Link],[Link]

4. Modificar el ejercicio anterior para que muestre en los valores nulos de las
columnas número de pedidos y dinero generado un 0.
select [Link],COUNT( [Link] ),
case when SUM( [Link] ) is null then 0 else SUM( [Link] ) end
from employees empleado left outer join orders pedidos on
[Link]=[Link]
group by [Link],[Link]

5. Modificar el ejercicio anterior para que muestre en lugar de un 0 las cadenas "Sin
Pedidos" y "Sin dinero".

select [Link],
case when COUNT( [Link] )=0 then cast('Sin pedidos' as VARCHAR) else
cast( COUNT( [Link] ) as nvarchar) end ,
case when SUM( [Link] ) is null then CAST('Sin dinero'as VARCHAR) else
cast(SUM( [Link] ) as nvarchar) end
from employees empleado left outer join orders pedidos on
[Link]=[Link]
group by [Link],[Link]

6. Crear una consulta que muestre el nombre de empleado, el número de


pedidos tramitado por cada empleado, de aquellos empleados que han tramitado
mas de 15 pedidos.

select [Link],case when COUNT( [Link]) > 15 then


COUNT( [Link]) end
from employees empleado inner join orders pedidos on
[Link]=[Link]
group by [Link]

7. Crear una consulta que muestre el nombre del cliente, el número de pedidos que
nos ha realizado el cliente, el dinero que nos ha dejado en la empresa, de todos los
clientes que sean de USA y que nos han realizado mas de 5 pedidos.

select [Link], count([Link]) ,SUM( [Link])


from customers cliente inner join orders pedidos on
[Link]=[Link]
where country = 'usa'
group by [Link]

8. Crear una consulta que muestre el nombre del jefe y el número de empleados a
su cargo de aquel jefe que mas empleados tenga a su cargo.

select top 1 [Link],COUNT( [Link]) as 'numEmp'


from employees jefe inner join employees empleado on
[Link]=[Link]
group by [Link]
ORDER BY numEmp desc
9. Obtener el nombre del cliente y el número de pedidos del cliente que mas
pedidos ha realizado en la empresa.

select top 1 [Link], count( [Link] )as 'numpedidos'


from customers cliente inner join orders pedidos on
[Link]=[Link]
group by [Link]
order by numpedidos desc

10. Obtener el nombre del cliente y el volumen de negocio del cliente 


que mas volumen de negocio nos ha dejado en la empresa.

select top 1 [Link],SUM ( [Link] ) as 'dinero'


from customers cliente inner join orders pedidos on
[Link]=[Link]
group by [Link],[Link]
order by dinero desc

También podría gustarte