0% encontró este documento útil (0 votos)
26 vistas12 páginas

Ejercicios de SQL

Este documento proporciona 20 ejercicios de SQL para practicar en las tablas de bases de datos de empleados y departamentos. Los ejercicios incluyen consultas para seleccionar empleados por nombre, trabajo y salario; encontrar los salarios más altos, el segundo más alto y el n-ésimo salario más alto; unir tablas para mostrar empleados y sus gerentes; contar empleados por departamento y gerente; analizar fechas de contratación y rangos de salario; y filtrar registros por nombre y fecha de contratación. El objetivo de los ejercicios es practicar consultas y funciones SQL comunes como agregaciones, uniones, filtrado y manipulación de cadenas.
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)
26 vistas12 páginas

Ejercicios de SQL

Este documento proporciona 20 ejercicios de SQL para practicar en las tablas de bases de datos de empleados y departamentos. Los ejercicios incluyen consultas para seleccionar empleados por nombre, trabajo y salario; encontrar los salarios más altos, el segundo más alto y el n-ésimo salario más alto; unir tablas para mostrar empleados y sus gerentes; contar empleados por departamento y gerente; analizar fechas de contratación y rangos de salario; y filtrar registros por nombre y fecha de contratación. El objetivo de los ejercicios es practicar consultas y funciones SQL comunes como agregaciones, uniones, filtrado y manipulación de cadenas.
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

20 EJERCICIOS DE SQL PARA PRACTICAR

Estructura y esquema de la tabla:

Crea una tabla con una columna de clave primaria

CREAR TABLA departamentos

( department_id ENTERO CLAVE PRIMARIA

VARCHAR(30)

location_id ENTERO

) ;

Crea una tabla con una clave foránea

CREAR TABLA empleados

( id_empleado ENTERO

, nombre VARCHAR(20)

, apellido VARCHAR(25)

, correo electrónico VARCHAR(25)

, número_de_teléfono VARCHAR(20)

, fecha_de_contratación FECHA

, job_id VARCHAR(10)

, salario ENTERO

, commission_pct ENTERO

manager_id ENTERO
, department_id ENTERO

, restricción pk_emp clave primaria (employee_id)

, restricción fk_deptno clave foránea (department_id) referencias


departamentos(id_del_departamento)

) ;

Insertar registros en tablas

## Insertar en la tabla Departamentos

INSERTAR EN departamentos VALORES ( 20,'Marketing', 180);

INSERTAR EN departamentos VALORES ( 30,'Compras', 1700);

INSERTAR EN departamentos VALORES ( 40, 'Recursos Humanos', 2400);

INSERTAR EN departamentos VALORES ( 50, 'Envío', 1500);

INSERTAR EN departamentos VALORES (60, 'TI', 1400);

INSERTAR EN departamentos VALORES ( 70, 'Relaciones Públicas', 2700);

INSERTAR EN departamentos VALORES ( 80 , 'Ventas', 2500 );

INSERTAR EN departamentos VALORES (90, 'Ejecutivo', 1700);

INSERTAR EN departamentos VALORES ( 100 , 'Finanzas', 1700);

INSERTAR EN departamentos VALORES ( 110 , 'Contabilidad', 1700);

INSERTAR EN departamentos VALORES ( 120 , 'Tesorería' , 1700);

INSERT INTO departments VALUES ( 130 , 'Impuesto Corporativo' , 1700 );

INSERTAR EN departamentos VALORES ( 140, 'Control y Crédito' , 1700);

INSERT INTO departments VALUES ( 150 , 'Servicios a Accionistas', 1700);

INSERT INTO departments VALUES ( 160 , 'Beneficios', 1700);


INSERTAR EN departamentos VALORES ( 170 , 'Nómina' , 1700);

## Insertar en la tabla Empleados

INSERT INTO empleados VALORES (100, 'Steven', 'Rey', 'SKING', '515.123.4567',


1987-06-17

INSERTAR EN empleados VALORES (101, 'Neena', 'Kochhar', 'NKOCHHAR',


515.123.4568

INSERTAR EN empleados VALORES (102 , 'Lex' , 'De Haan' , 'LDEHAAN' ,


515.123.4569

INSERTAR EN empleados VALORES (103, 'Alexander', 'Hunold', 'AHUNOLD',


590.423.4567

INSERTAR EN empleados VALORES (104 , 'Bruce' , 'Ernst' , 'BERNST' ,


590.423.4568

INSERT INTO employees VALUES (105 , 'David' , 'Austin' , 'DAUSTIN' ,


590.423.4569

INSERT INTO employees VALUES (106, 'Valli', 'Pataballa', 'VPATABAL',


590.423.4560

INSERTAR EN empleados VALORES (107, 'Diana', 'Lorentz', 'DLORENTZ',


590.423.5567

INSERTAR EN empleados VALORES (108 , 'Nancy' , 'Greenberg' , 'NGREENBE' ,


515.124.4569

INSERT INTO empleados VALUES (109, 'Daniel', 'Faviet', 'DFAVIET',


515.124.4169

INSERTAR EN empleados VALORES (110, 'John', 'Chen', 'JCHEN',


'515.124.4269' , '1997-04-09', 'FI_ACCOUNT' , 8200 , NULL , 108 , 170);

INSERT INTO employees VALUES (111 , 'Ismael' , 'Sciarra' , 'ISCIARRA' ,


515.124.4369

INSERTAR EN empleados VALORES (112 , 'Jose Manuel' , 'Urman' , 'JMURMAN' ,


515.124.4469
INSERT INTO employees VALUES (113 , 'Luis' , 'Popp' , 'LPOPP' ,
515.124.4567

INSERTAR EN empleados VALORES (114 , 'Den' , 'Raphaely' , 'DRAPHEAL' ,


515.127.4561

INSERT INTO empleados VALORES (115 , 'Alexander' , 'Khoo' , 'AKHOO' ,


515.127.4562

INSERTAR EN empleados VALORES (116 , 'Shelli' , 'Baida' , 'SBAIDA' ,


515.127.4563

INSERTAR EN empleados VALORES (117 , 'Sigal' , 'Tobias' , 'STOBIAS' ,


515.127.4564

INSERTAR EN empleados VALORES (118, 'Guy', 'Himuro', 'GHIMURO'


515.127.4565

INSERTAR EN empleados VALORES (119 , 'Karen' , 'Colmenares' , 'KCOLMENA' ,


515.127.4566

INSERTAR EN empleados VALORES (120 , 'Matthew' , 'Weiss' , 'MWEISS' ,


650.123.1234

INSERTAR EN empleados VALORES (121 , 'Adam' , 'Fripp' , 'AFRIPP' ,


650.123.2234

INSERT INTO empleados VALUES (122 , 'Payam' , 'Kaufling' , 'PKAUFLIN' ,


650.123.3234

INSERTAR EN empleados VALORES (123, 'Shanta', 'Vollman', 'SVOLLMAN',


650.123.4234

INSERTAR EN empleados VALORES (124, 'Kevin', 'Mourgos', 'KMOURGOS',


650.123.5234

INSERTAR EN empleados VALORES (125, 'Julia', 'Nayer', 'JNAYER',


650.124.1214

INSERTAR EN empleados VALORES (126, 'Irene', 'Mikkilineni', 'IMIKKILI'


650.124.1224

INSERTAR EN empleados VALORES (127, 'James', 'Landry', 'JLANDRY',


650.124.1334
INSERTAR EN empleados VALORES (128, 'Steven', 'Markle', 'SMARKLE',
650.124.1434

INSERTAR EN empleados VALORES (129, 'Laura', 'Bissot', 'LBISSOT',


650.124.5234

INSERT INTO employees VALUES (130, 'Mozhe', 'Atkinson', 'MATKINSO',


650.124.6234

Entonces, ahora tenemos 2 tablas y algunos datos listos para ejecutar nuestro SQL. Es hora de
algunos ejercicios.

Resolver Ejercicios de SQL

1. Seleccione el nombre, apellido, id_trabajo y salario de los empleados cuyo


el primer nombre comienza con la letra S

seleccionar nombre

apellido

id_de_trabajo

salario

de empleados

donde upper(first_name) like 'S%';

2. Escribe una consulta para seleccionar al empleado con el salario más alto

seleccionar id_empleado

nombre

apellido

identificación_del_trabajo

salario

de empleados
donde salario = (seleccionar máximo(sueldo) de empleados);

3. Seleccionar al empleado con el segundo salario más alto

seleccionar id_empleado

nombre

apellido

identificador_de_trabajo

salario

de empleados

donde salario != (seleccionar max(salario) de empleados)

ordenar por salario desc

límite 1;

La consulta anterior selecciona solo a una persona con el segundo salario más alto. Pero
¿Qué pasa si hay más de una persona con el mismo salario? O, ¿qué pasa si queremos
¿Seleccionar el tercer o cuarto salario más alto? Entonces, intentemos un enfoque genérico.

4. Obtener empleados con el segundo o tercer salario más alto

#cambia la entrada para el segundo, tercero o cuarto salario más alto

establecer @entrada:=3;

seleccionar id_empleado

nombre

apellido

id_de_trabajo

salario
de empleados e

donde @input =(seleccionar CONTAR(DISTINTO Salario)

de empleados p

donde [Link]<=[Link]);

5. Escriba una consulta para seleccionar empleados y su correspondiente


gerentes y sus salarios

Ahora, este es un ejemplo clásico de AUTO JOIN en ejercicios de SQL. También, soy
utilizando la función CONCAT para concatenar el primer nombre y el apellido de
cada empleado y gerente.
seleccionar concat(emp.first_name, ' ', emp.last_name) empleado,

[Link] emp_sal,

concat(mgr.first_name,' ',mgr.last_name) gerente,

salario del gerente

de empleados emp

unir empleados mgr en emp.manager_id = mgr.employee_id;

6. Escriba una consulta para mostrar el conteo de empleados bajo cada gerente
en orden descendente
seleccionar

sup.id_empleado id_empleado

concat(sup.first_name,' ', sup.last_name)nombre_gerente,

CONTAR (sub.employee_id) COMO número_de_reportes

de empleados sub

unir empleados sup


en sub.manager_id = sup.employee_id

agrupado por sup.employee_id, sup.first_name, sup.last_name

ordenar por 3 desc;

7. Encuentra el número de empleados en cada departamento

selecciona dept.nombre_del_departamento

count(emp.employee_id) emp_count

de empleados emp

unir departamentos dept en emp.department_id = dept.department_id

agrupar por dept.department_name

ordenar por 2 desc;

8. Obtén el conteo de empleados contratados por año

año_contratación

de empleados

agrupado por año(hire_date)

ordenar por 2 descendente;

9. Encuentra el rango salarial de los empleados

seleccionar min(salario) min_sal,

max(salario)

redondear(promedio(salario)) avg_sal

de empleados;

10. Escribe una consulta para dividir a las personas en tres grupos según su
salarios
seleccionar concat(nombre,' ',apellido) empleado,

salario

caso

cuando el salario >=2000 y el salario < 5000 entonces "bajo"

cuando el salario >=5000 y el salario < 10000 entonces "medio"

sino

alto

fin como nivel_sueldo

de empleados

ordenar por 1;

11. Seleccione a los empleados cuyo primer_nombre contiene "an"

seleccionar (nombre)

de empleados

donde lower(first_name) como '%an%';

12. Seleccione el nombre de pila del empleado y el número de teléfono correspondiente


número en el formato (_ _ _)-(_ _ _)-(_ _ _ _)
seleccionar concat(nombre, ' ', apellido) empleado,

reemplazar(número_de_teléfono,'.','-') número_de_teléfono

de empleados;

13. Encuentra los empleados que se unieron en agosto de 1994.

seleccionar concat(nombre, ' ', apellido) empleado,

fecha_de_contratación
de empleados

donde año(hire_date) = '1994'

y mes(hire_date) = '08';

14. Escribe una consulta SQL para mostrar a los empleados que ganan más de
el salario promedio en esa empresa
seleccionar

concat(emp.first_name, last_name) nombre

emp.id_empleado

departamento.nombre_del_departamento departamento,

dept.department_id,

[Link]

de los departamentos dept

UNIR empleados emp en dept.department_id = emp.department_id

donde [Link] > (seleccionar avg(salary) de empleados)

ordenar por dept.department_id;

15. Encuentra el salario máximo de cada departamento.

seleccionar

dept.department_id,

departamento.nombre_del_departamento departamento,

máximo([Link])

desde departamentos dept

UNIR empleados emp en dept.department_id = emp.department_id


agrupar por dept.department_name,

dept.department_id

ordenar por dept.department_id ;

16. Escribe una consulta SQL para mostrar los 5 empleados con menores ingresos.

seleccionar

nombre

id_empleado

salario

de empleados

ordenar por salario

límite 5;

17. Encuentra a los empleados contratados en los años 80

seleccionar id_empleado,
concat(first_name,' ' , last_name) empleado,
fecha de contratación
de empleados
donde año(hire_date) entre 1980 y 1989;

18. Mostrar el nombre y el apellido de los empleados en orden inverso


seleccionar lower(first_name) nombre

min_reves(lower(primer_nombre))

de empleados;

19. Encuentra a los empleados que se unieron a la empresa después del 15 de


mes
seleccionar employee_id
concat(first_name, ' ', last_name) empleado,

fecha de contratación

de empleados

donde día(hire_date)> 15;

20. Mostrar los gerentes y los empleados que reportan que trabajan en
diferentes departamentos

seleccionar

concat(mgr.first_name,' ',mgr.last_name) gerente,

concat(emp.first_name,' ',emp.last_name) empleado,

mgr.department_id mgr_dept,

emp.departamento_id

de empleados emp

unir empleados mgr en emp.manager_id = mgr.employee_id

donde emp.department_id != mgr.department_id

ordenar por 1;

Fuente: [Link]

También podría gustarte