Examen Práctico de Oracle SQL: Consultas sin JOIN

En este artículo se presentan posibles preguntas de examen para practicar consultas en Oracle SQL, diseñadas sin el uso de la cláusula JOIN. Cada pregunta incluye su solución detallada, abarcando subconsultas, funciones de agregado, manipulación de datos y más.


Tabla de contenidos

Sección 1: Consultas Básicas con Subconsultas

1. Calcular el sueldo medio, el número de comisiones no nulas, el sueldo máximo y mínimo del departamento 30.

Consulta:

SELECT 
    TO_CHAR(AVG(salario), '999G999D99') AS sueldo_medio,
    COUNT(comision) AS comisiones_no_nulas,
    TO_CHAR(MAX(salario), '999G999D99') AS sueldo_maximo,
    TO_CHAR(MIN(salario), '999G999D99') AS sueldo_minimo
FROM emple
WHERE dept_no = 30;

2. Obtener los apellidos de empleados con más de 15 años trabajando.

Consulta:

SELECT apellido
FROM emple
WHERE ADD_MONTHS(fecha_alt, 180) <= SYSDATE;

3. Seleccionar los apellidos de empleados que llevan más de 16 años trabajando en el departamento «VENTAS».

Consulta:

SELECT apellido
FROM emple
WHERE dept_no = (SELECT dept_no 
                 FROM depart 
                 WHERE dnombre = 'VENTAS')
AND ADD_MONTHS(fecha_alt, 192) <= SYSDATE;

4. Mostrar el apellido, el salario y el número de departamento de empleados cuyo salario sea el más alto de su departamento.

Consulta:

SELECT apellido, salario, dept_no
FROM emple
WHERE salario = (SELECT MAX(salario)
                 FROM emple e
                 WHERE e.dept_no = emple.dept_no);

5. Visualizar el apellido, salario y departamento de empleados cuyo salario sea superior al promedio de su departamento.

Consulta:

SELECT apellido, salario, dept_no
FROM emple
WHERE salario > (SELECT AVG(salario)
                 FROM emple e
                 WHERE e.dept_no = emple.dept_no);

Sección 2: Consultas sobre la Tabla LIBRERIA

6. Mostrar los temas con mayor número de ejemplares que contengan al menos una ‘E’.

Consulta:

SELECT tema
FROM libreria
WHERE tema LIKE '
AND ejemplares = (SELECT MAX(ejemplares) FROM libreria);

7. Visualizar los temas cuyos ejemplares son exactamente 7 como «SEVEN»; el resto debe mostrarse sin cambios.

Consulta:

SELECT CASE 
           WHEN ejemplares = 7 THEN 'SEVEN'
           ELSE tema
       END AS tema_final
FROM libreria;

8. Visualizar el tema, el último carácter no blanco y el número de caracteres del tema sin espacios a la derecha.

Consulta:

SELECT tema,
       RTRIM(SUBSTR(tema, -1)) AS ultimo_caracter,
       LENGTH(RTRIM(tema)) AS longitud
FROM libreria;

Sección 3: Consultas sobre la Tabla MISTEXTOS

9. Generar el siguiente formato para los títulos:

Resultado esperado:

METODOLOGÍA DE LA PROGRAMACIÓN-^-^-^-^-
INFORMÁTICA BÁSICA-^-^-^-^-^-^-^-^-^-
SISTEMAS OPERATIVOS-^-^-^-^-^-^-^-^-^-
SISTEMAS DIGITALES-^-^-^-^-^-^-^-^-^-
MANUAL DE C-^-^-^-^-^-^-^-^-^-^-^-^-^-

Consulta:

SELECT REPLACE(REPLACE(UPPER(titulo), '.', ''), '"', '') || '-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-' AS formato_titulo
FROM mistextos;

10. Visualizar los títulos sin puntos ni comillas y en minúscula utilizando dos métodos.

Primera forma:

SELECT LOWER(REPLACE(REPLACE(titulo, '.', ''), '"', '')) AS titulo_formateado
FROM mistextos;

Segunda forma:

SELECT LOWER(REGEXP_REPLACE(titulo, '[.""]', '')) AS titulo_formateado
FROM mistextos;

Sección 4: Consultas sobre la Tabla LIBROS

11. Mostrar el autor y el apellido del autor.

Consulta:

SELECT autor, SUBSTR(autor, INSTR(autor, ',') + 2) AS apellido
FROM libros;

12. Visualizar el autor y su nombre sin el apellido.

Consulta:

SELECT autor, SUBSTR(autor, 1, INSTR(autor, ',') - 1) AS nombre
FROM libros;

13. Combinar en una columna el nombre y el apellido del autor.

Consulta:

SELECT autor,
       SUBSTR(autor, INSTR(autor, ',') + 2) || ' ' || SUBSTR(autor, 1, INSTR(autor, ',') - 1) AS nombre_completo
FROM libros;

14. Ordenar los títulos por su número de caracteres.

Consulta:

SELECT titulo
FROM libros
ORDER BY LENGTH(titulo);

Sección 5: Consultas sobre la Tabla NACIMIENTOS

15. Mostrar el nombre, la fecha de nacimiento y la fecha formateada como «Nació el DD de Mes de YYYY».

Consulta:

SELECT nombre, fechanac, 
       TO_CHAR(fechanac, '"Nació el "DD" de "MONTH" de "YYYY') AS fecha_formateada
FROM nacimientos;

16. Mostrar el nombre seguido de su fecha de nacimiento formateada, quitando espacios del nombre.

Consulta:

SELECT RTRIM(nombre) || ' - ' || TO_CHAR(fechanac, 'DD/MM/YYYY') AS nombre_fecha
FROM nacimientos;

17. Convertir la cadena ‘010712’ a una fecha y mostrar el nombre del mes en mayúsculas.

Consulta:

SELECT UPPER(TO_CHAR(TO_DATE('010712', 'DDMMYY'), 'MONTH')) AS mes
FROM dual;

Conclusión

Este examen cubre una amplia variedad de consultas útiles en Oracle SQL, desde funciones de agregación hasta manipulación de texto y fechas, utilizando exclusivamente subconsultas en lugar de JOIN. Este enfoque te permitirá practicar y comprender las capacidades de Oracle SQL, fortaleciendo tu preparación para evaluaciones prácticas.

person encoding in laptop
Photo by Lukas on Pexels.com

Deja un comentario

Información básica sobre protección de datos Ver más

  • Responsable: Tomas Gonzalez.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

error: Content is protected !!

Descubre más desde Tomás González: Formador y Desarrollador Web

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo

Este sitio web utiliza cookies, si necesitas más información puedes visitar nuestra política de privacidad    Ver
Privacidad