SlideShare una empresa de Scribd logo
Resolución - Ejercicios N°3 – SQL Básico
Utilizando la base de datos RRHH:
1. Muestre la cantidad de clientes y promedio de Salario agrupado por el Nombre del
departamento y por la descripción del puesto.
SELECT NOMBRE_DPTO,NOMBRE_CARGO,COUNT(ID_EMPLEADO) AS CANT_EMPL,
AVG(SUELDO)AS PROM_SUELDO
FROM CL_EMPLEADOS A
INNER JOIN CL_DEPARTAMENTOS B ON A.ID_DPTO=B.ID_DPTO
INNER JOIN CL_CARGOS C ON A.ID_CARGOS=C.ID_CARGOS
GROUP BY NOMBRE_DPTO,NOMBRE_CARGO
2. Ahora muestre las mismas variables agrupadas por nombre de Región y de País.
SELECT NOMBRE_REGION,NOMBRE_PAIS,COUNT(ID_EMPLEADO) AS
CANT_EMPL, AVG(SUELDO)AS PROM_SUELDO
FROM CL_EMPLEADOS A
INNER JOIN CL_DEPARTAMENTOS B ON A.ID_DPTO=B.ID_DPTO
INNER JOIN CL_LOCALIDAD C ON B.ID_LOCALIDAD=C.ID_LOCALIDAD
INNER JOIN CL_PAISES D ON C.ID_PAIS = D.ID_PAIS
INNER JOIN CL_REGIONES E ON D.ID_REGION = E.ID_REGION
GROUP BY NOMBRE_REGION,NOMBRE_PAIS
3. Se quiere realizar una encuesta de satisfacción y se desea tomar 20 empleados al azar para
realizarla. Realice el código para la extracción de esta muestra. Que el detalle incluya nombres
y apellidos, correo electrónico y teléfono, además que se encuentre ordenada por apellidos y
por área funcional.
SELECT TOP 20*
INTO TABLA_EJERC3
FROM CL_EMPLEADOS
GO
SELECT NOMBRE_DPTO, APELLIDOS, NOMBRES, EMAIL, TELEFONO
FROM TABLA_EJERC3 A
INNER JOIN CL_DEPARTAMENTOS D ON A.ID_DPTO = D.ID_DPTO
ORDER BY APELLIDOS ASC, NOMBRE_DPTO ASC
4. Realice la extracción de la muestra para la encuesta, pero ahora tomando los 2 empleados que
más ganan por área funcional.
SELECT *
FROM
(SELECT NOMBRE_DPTO,SUELDO, APELLIDOS, NOMBRES,
ROW_NUMBER()OVER (PARTITION BY NOMBRE_DPTO ORDER BY SUELDO DESC)
AS POSICION
FROM CL_EMPLEADOS E
INNER JOIN CL_DEPARTAMENTOS D ON E.ID_DPTO=D.ID_DPTO) AS TOP2
WHERE TOP2.POSICION <=2
5. En base a la tabla de empleados, crear una tabla que contenga a los trabajadores que tengan
25 años o menos. Adicione una restricción en la variable ID_EMPLEADO como PRIMARY KEY
SELECT *
INTO MENORES_25_COPIA
FROM CL_EMPLEADOS
WHERE EDAD <= 25
GO
ALTER TABLE MENORES_25_COPIA
ALTER COLUMN ID_EMPLEADO VARCHAR(50) NOT NULL
GO
ALTER TABLE MENORES_25_COPIA
ADD CONSTRAINT RESTR_ID_EMPL
PRIMARY KEY (ID_EMPLEADO)
GO
6. Adicione a la tabla del punto anterior la variable EDAD (que sólo admita valores entre 10 y 110
años) y la variable ECIVIL (que sólo admita los valores C (casado), S (soltero) y O (otro)
ALTER TABLE MENORES_25_COPIA
ADD ECIVIL VARCHAR(50),
CONSTRAINT ECIVIL CHECK (ECIVIL='C' OR ECIVIL = 'S' OR ECIVIL =
'O'),
CONSTRAINT EDAD CHECK (EDAD>=10 and EDAD<=110)
GO
7. Finalmente agregarle la restricción a la fecha de ingreso para que tenga como valor por defecto
(DEFAULT) la fecha actual del sistema.
ALTER TABLE MENORES_25_COPIA
ADD CONSTRAINT RESTR_FECHA
DEFAULT GETDATE() FOR FECHA_INGRESO
8. Invente un empleado nuevo el ingréselo, mostrando que están funcionando correctamente las
restricciones de la parte 5 a la 7, para ello pruebe inserciones que no cumplan con los
supuestos y muestre la salida resultante de la falla de la inserción. Finalmente muestre una
inserción satisfactoria (no coloque fecha de ingreso del empleado).
----INSERCIÓN NO SATISFACTORIA (ID_EMPLEADO)---
INSERT INTO MENORES_25_COPIA
VALUES (NULL, 'STEFANY', 'SALAZAR',
'STE.SAL@EMPRESA.COM.PE','6890789654',
DEFAULT,'MK_REP','3000','0.2','103','20','20','STEFANY
SALAZAR','2800','S')
---INSERCIÓN NO SATISFACTORIA (EDAD)---
INSERT INTO MENORES_25_ORIG
VALUES ('203', 'STEFANY', 'SALAZAR',
'STE.SAL@EMPRESA.COM.PE','6890789654',
DEFAULT,'MK_REP','3000','0.2','103','20',120,'STEFANY
SALAZAR','2800','S')
----INSERCIÓN NO SATISFACTORIA (ECIVIL)---
INSERT INTO MENORES_25_COPIA
VALUES('203','STEFANY', 'SALAZAR',
'STE.SAL@EMPRESA.COM.PE','6890789654',
DEFAULT,'MK_REP','3000','0.2','103','20',20,'STEFANY
SALAZAR','2800','D')
---INSERCIÓN SATISFACTORIA - CUMPLE CON TODAS LAS RESTRICCIONES--
INSERT INTO MENORES_25_COPIA
VALUES ('203', 'STEFANY', 'SALAZAR',
'STE.SAL@EMPRESA.COM.PE','6.890.789.654',DEFAULT
,'MK_REP','3000','0.2','103','20','20','STEFANY
SALAZAR','2880','S')
9. A la tabla anterior, adicionarle el nombre del departamento y el nombre del cargo del
empleado. Para ello crear los campos y luego actualizarlos cruzando la tabla empleados con la
tabla correspondiente.
ALTER TABLE MENORES_25_COPIA
ADD NOMBRE_DPTO varchar(50), NOMBRE_CARGO varchar(50)
GO
UPDATE MENORES_25_COPIA
SET MENORES_25_COPIA.NOMBRE_CARGO=dbo.CL_CARGOS.NOMBRE_CARGO,
MENORES_25_COPIA.NOMBRE_DPTO=dbo.CL_DEPARTAMENTOS.NOMBRE_DPTO
FROM MENORES_25_COPIA JOIN CL_DEPARTAMENTOS ON
MENORES_25_COPIA.ID_DPTO=CL_DEPARTAMENTOS.ID_DPTO
JOIN CL_CARGOS ON MENORES_25_COPIA.ID_CARGOS=CL_CARGOS.ID_CARGOS
GO
SELECT*
FROM MENORES_25_COPIA
ORDER BY ID_EMPLEADO

Más contenido relacionado

DOC
Ejercicios
DOCX
Include
DOCX
Actividad exploratoria
PPTX
Restricciones y Ordenacion en SQL con Oracle
PPTX
Funciones de Agregacion
DOCX
Programacion
DOCX
Consultas anidadas o subconsultas oracle
PDF
ejercicio gambas
Ejercicios
Include
Actividad exploratoria
Restricciones y Ordenacion en SQL con Oracle
Funciones de Agregacion
Programacion
Consultas anidadas o subconsultas oracle
ejercicio gambas

La actualidad más candente (10)

PDF
Algoritmica i clase06 practica 6 solucionario
PPTX
Funciones+sql+server
DOCX
Informatica
DOCX
Programa suma y multiplicacion alexander freites
DOCX
Excel practica-10-laboratorio de quimica
PDF
Programación de ejercicios de consola y gráficos en GAMBAS
DOCX
Programas operadores
DOC
Ejercicio filtros bases datos excel
DOCX
Resultado de una raiz
Algoritmica i clase06 practica 6 solucionario
Funciones+sql+server
Informatica
Programa suma y multiplicacion alexander freites
Excel practica-10-laboratorio de quimica
Programación de ejercicios de consola y gráficos en GAMBAS
Programas operadores
Ejercicio filtros bases datos excel
Resultado de una raiz
Publicidad

Similar a Soluciones ejercicios 3 (20)

PPT
SQL-DDL
PDF
Ejercicios resueltos de_pl-sql
PDF
Consultas-SQL.pdf
PDF
Consultas sql
DOCX
Base datos mysql y visual basic
DOC
Trabajando con sql (parte 2)
PDF
Complemento del manual de programacion iii sql
PDF
Guia de ejercicios para resolver sql
PPTX
Sentencia select
PDF
Manualsqlserverparte
PDF
Manual sql server
PPT
Consultas en SQL
PDF
Computo movil ejercicio clases resuelto
PPT
Ti. Sql.Caso1al9.Consultas
PDF
Ejercicios sql access
PDF
Ejercicios sql access
PDF
Ejercicios sql access.
PDF
Ejercicios sql access
SQL-DDL
Ejercicios resueltos de_pl-sql
Consultas-SQL.pdf
Consultas sql
Base datos mysql y visual basic
Trabajando con sql (parte 2)
Complemento del manual de programacion iii sql
Guia de ejercicios para resolver sql
Sentencia select
Manualsqlserverparte
Manual sql server
Consultas en SQL
Computo movil ejercicio clases resuelto
Ti. Sql.Caso1al9.Consultas
Ejercicios sql access
Ejercicios sql access
Ejercicios sql access.
Ejercicios sql access
Publicidad

Último (17)

PPTX
Qué es Google Classroom Insertar SlideShare U 6.pptx
PDF
Libro de Oraciones guia virgen peregrina
PDF
LA INTELIGENCIA ARTIFICAL SU HISTORIA Y EL FUTURO
PPT
redes.ppt unidad 2 perteneciente a la ing de software
PDF
.GUIA DE GUIA DE TRABAJO NUEVO TESTAMENTO.pdf
PDF
Herramientaa de google google keep, maps.pdf
PDF
COSMIC_DANCER_ORACLE.pdf tarot oráculo cartas
PPTX
PRESENTACION NIA 220 idhsahdjhJKSDHJKSHDJSHDJKHDJHSAJDHJKSAHDJkhjskdhasjdhasj...
PDF
[Ebook gratuito] Introducción a la IA Generativa, Instalación y Configuración...
PPTX
Informática e inteligencia artificial (2).pptx
PPTX
Evolución de la computadora ACTUALMENTE.pptx
PPTX
presentacion_energias_renovables_renovable_.pptx
PDF
CAPACITACIÓN MIPIG - MODELO INTEGRADO DE PLANEACIÓN Y GESTIÓN
PPTX
presentación sobre Programación SQL.pptx
PPTX
FUNCIONES DE CLASSROOM EN EL FUNCIONAMIENTO ESCOLAR
PPTX
Plantilla-Hardware-Informático-oficce.pptx
DOCX
ESTRATEGIA DE APOYO TECNOLOGÍA 2 PERIODO
Qué es Google Classroom Insertar SlideShare U 6.pptx
Libro de Oraciones guia virgen peregrina
LA INTELIGENCIA ARTIFICAL SU HISTORIA Y EL FUTURO
redes.ppt unidad 2 perteneciente a la ing de software
.GUIA DE GUIA DE TRABAJO NUEVO TESTAMENTO.pdf
Herramientaa de google google keep, maps.pdf
COSMIC_DANCER_ORACLE.pdf tarot oráculo cartas
PRESENTACION NIA 220 idhsahdjhJKSDHJKSHDJSHDJKHDJHSAJDHJKSAHDJkhjskdhasjdhasj...
[Ebook gratuito] Introducción a la IA Generativa, Instalación y Configuración...
Informática e inteligencia artificial (2).pptx
Evolución de la computadora ACTUALMENTE.pptx
presentacion_energias_renovables_renovable_.pptx
CAPACITACIÓN MIPIG - MODELO INTEGRADO DE PLANEACIÓN Y GESTIÓN
presentación sobre Programación SQL.pptx
FUNCIONES DE CLASSROOM EN EL FUNCIONAMIENTO ESCOLAR
Plantilla-Hardware-Informático-oficce.pptx
ESTRATEGIA DE APOYO TECNOLOGÍA 2 PERIODO

Soluciones ejercicios 3

  • 1. Resolución - Ejercicios N°3 – SQL Básico Utilizando la base de datos RRHH: 1. Muestre la cantidad de clientes y promedio de Salario agrupado por el Nombre del departamento y por la descripción del puesto. SELECT NOMBRE_DPTO,NOMBRE_CARGO,COUNT(ID_EMPLEADO) AS CANT_EMPL, AVG(SUELDO)AS PROM_SUELDO FROM CL_EMPLEADOS A INNER JOIN CL_DEPARTAMENTOS B ON A.ID_DPTO=B.ID_DPTO INNER JOIN CL_CARGOS C ON A.ID_CARGOS=C.ID_CARGOS GROUP BY NOMBRE_DPTO,NOMBRE_CARGO 2. Ahora muestre las mismas variables agrupadas por nombre de Región y de País. SELECT NOMBRE_REGION,NOMBRE_PAIS,COUNT(ID_EMPLEADO) AS CANT_EMPL, AVG(SUELDO)AS PROM_SUELDO FROM CL_EMPLEADOS A INNER JOIN CL_DEPARTAMENTOS B ON A.ID_DPTO=B.ID_DPTO INNER JOIN CL_LOCALIDAD C ON B.ID_LOCALIDAD=C.ID_LOCALIDAD INNER JOIN CL_PAISES D ON C.ID_PAIS = D.ID_PAIS INNER JOIN CL_REGIONES E ON D.ID_REGION = E.ID_REGION GROUP BY NOMBRE_REGION,NOMBRE_PAIS 3. Se quiere realizar una encuesta de satisfacción y se desea tomar 20 empleados al azar para realizarla. Realice el código para la extracción de esta muestra. Que el detalle incluya nombres y apellidos, correo electrónico y teléfono, además que se encuentre ordenada por apellidos y por área funcional. SELECT TOP 20* INTO TABLA_EJERC3 FROM CL_EMPLEADOS GO SELECT NOMBRE_DPTO, APELLIDOS, NOMBRES, EMAIL, TELEFONO FROM TABLA_EJERC3 A INNER JOIN CL_DEPARTAMENTOS D ON A.ID_DPTO = D.ID_DPTO ORDER BY APELLIDOS ASC, NOMBRE_DPTO ASC 4. Realice la extracción de la muestra para la encuesta, pero ahora tomando los 2 empleados que más ganan por área funcional. SELECT * FROM (SELECT NOMBRE_DPTO,SUELDO, APELLIDOS, NOMBRES, ROW_NUMBER()OVER (PARTITION BY NOMBRE_DPTO ORDER BY SUELDO DESC) AS POSICION FROM CL_EMPLEADOS E INNER JOIN CL_DEPARTAMENTOS D ON E.ID_DPTO=D.ID_DPTO) AS TOP2 WHERE TOP2.POSICION <=2 5. En base a la tabla de empleados, crear una tabla que contenga a los trabajadores que tengan 25 años o menos. Adicione una restricción en la variable ID_EMPLEADO como PRIMARY KEY SELECT *
  • 2. INTO MENORES_25_COPIA FROM CL_EMPLEADOS WHERE EDAD <= 25 GO ALTER TABLE MENORES_25_COPIA ALTER COLUMN ID_EMPLEADO VARCHAR(50) NOT NULL GO ALTER TABLE MENORES_25_COPIA ADD CONSTRAINT RESTR_ID_EMPL PRIMARY KEY (ID_EMPLEADO) GO 6. Adicione a la tabla del punto anterior la variable EDAD (que sólo admita valores entre 10 y 110 años) y la variable ECIVIL (que sólo admita los valores C (casado), S (soltero) y O (otro) ALTER TABLE MENORES_25_COPIA ADD ECIVIL VARCHAR(50), CONSTRAINT ECIVIL CHECK (ECIVIL='C' OR ECIVIL = 'S' OR ECIVIL = 'O'), CONSTRAINT EDAD CHECK (EDAD>=10 and EDAD<=110) GO 7. Finalmente agregarle la restricción a la fecha de ingreso para que tenga como valor por defecto (DEFAULT) la fecha actual del sistema. ALTER TABLE MENORES_25_COPIA ADD CONSTRAINT RESTR_FECHA DEFAULT GETDATE() FOR FECHA_INGRESO 8. Invente un empleado nuevo el ingréselo, mostrando que están funcionando correctamente las restricciones de la parte 5 a la 7, para ello pruebe inserciones que no cumplan con los supuestos y muestre la salida resultante de la falla de la inserción. Finalmente muestre una inserción satisfactoria (no coloque fecha de ingreso del empleado). ----INSERCIÓN NO SATISFACTORIA (ID_EMPLEADO)--- INSERT INTO MENORES_25_COPIA VALUES (NULL, 'STEFANY', 'SALAZAR', 'STE.SAL@EMPRESA.COM.PE','6890789654', DEFAULT,'MK_REP','3000','0.2','103','20','20','STEFANY SALAZAR','2800','S') ---INSERCIÓN NO SATISFACTORIA (EDAD)--- INSERT INTO MENORES_25_ORIG VALUES ('203', 'STEFANY', 'SALAZAR', 'STE.SAL@EMPRESA.COM.PE','6890789654', DEFAULT,'MK_REP','3000','0.2','103','20',120,'STEFANY SALAZAR','2800','S') ----INSERCIÓN NO SATISFACTORIA (ECIVIL)--- INSERT INTO MENORES_25_COPIA VALUES('203','STEFANY', 'SALAZAR', 'STE.SAL@EMPRESA.COM.PE','6890789654', DEFAULT,'MK_REP','3000','0.2','103','20',20,'STEFANY SALAZAR','2800','D') ---INSERCIÓN SATISFACTORIA - CUMPLE CON TODAS LAS RESTRICCIONES--
  • 3. INSERT INTO MENORES_25_COPIA VALUES ('203', 'STEFANY', 'SALAZAR', 'STE.SAL@EMPRESA.COM.PE','6.890.789.654',DEFAULT ,'MK_REP','3000','0.2','103','20','20','STEFANY SALAZAR','2880','S') 9. A la tabla anterior, adicionarle el nombre del departamento y el nombre del cargo del empleado. Para ello crear los campos y luego actualizarlos cruzando la tabla empleados con la tabla correspondiente. ALTER TABLE MENORES_25_COPIA ADD NOMBRE_DPTO varchar(50), NOMBRE_CARGO varchar(50) GO UPDATE MENORES_25_COPIA SET MENORES_25_COPIA.NOMBRE_CARGO=dbo.CL_CARGOS.NOMBRE_CARGO, MENORES_25_COPIA.NOMBRE_DPTO=dbo.CL_DEPARTAMENTOS.NOMBRE_DPTO FROM MENORES_25_COPIA JOIN CL_DEPARTAMENTOS ON MENORES_25_COPIA.ID_DPTO=CL_DEPARTAMENTOS.ID_DPTO JOIN CL_CARGOS ON MENORES_25_COPIA.ID_CARGOS=CL_CARGOS.ID_CARGOS GO SELECT* FROM MENORES_25_COPIA ORDER BY ID_EMPLEADO