Consultas SQL: Ejemplos Prácticos con Bancos, Usuarios y Actividades
Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 5,26 KB
A continuación, se presentan una serie de consultas SQL para practicar la manipulación de datos en bases de datos. Estas consultas involucran tablas de bancos, usuarios y actividades.
1. Visualización de Bancos y Usuarios
Visualizar los bancos con sus correspondientes usuarios, eliminando los espacios en blanco del nombre del banco, ordenado por nombre de banco.
SELECT SUBSTR(BANCOS.NOMBRE,1,15), USUARIOS.NOMBRE FROM BANCOS, USUARIOS WHERE ENT_SUC=CODIGO_BANCO ORDER BY BANCOS.NOMBRE;
2. Actividades con Cuota Inferior a la Media
Seleccionar las actividades cuya cuota es inferior a la media de las cuotas de los usuarios que tienen cuota familiar.
SELECT DESCRIPCION FROM ACTIVIDADES WHERE CUOTA < (SELECT AVG(CUOTA_SOCIO) FROM USUARIOS WHERE CUOTA_FAMILIAR IS NOT NULL);
3. Visualización de Cuotas Familiares
Visualizar las cuotas familiares de todos los socios. Si son nulas, debe aparecer el mensaje ‘ES NULA’.
SELECT NVL(TO_CHAR(CUOTA_FAMILIAR),'ES NULA') FROM USUARIOS;
4. Usuarios con Apellidos que Empiezan por 'A'
Visualizar el nombre y los apellidos de aquellos usuarios cuyo primer y segundo apellido empiecen por 'A'.
SELECT NOMBRE, APELLIDOS FROM USUARIOS WHERE SUBSTR(APELLIDOS,INSTR(APELLIDOS,' ')+1) LIKE 'A%' AND APELLIDOS LIKE 'A%';
5. Usuarios, Actividades y Bancos
Visualizar los nombres de los usuarios, la descripción de las actividades que realizan y el nombre del banco a través del cual pagan (pueden salir repetidos).
SELECT U.NOMBRE, U.APELLIDOS, B.NOMBRE, A.DESCRIPCION FROM BANCOS B, USUARIOS U, ACTIVIDADES A, ACTIVIDADES_USUARIOS AU WHERE B.ENT_SUC=U.CODIGO_BANCO AND AU.CODIGO_USUARIO=U.NUM_SOCIO AND A.CODIGO_ACTIVIDAD=AU.CODIGO_ACTIVIDAD;
6. Usuarios con la Misma Actividad que Ines Perez Diaz
Seleccionar los nombres y apellidos de aquellos usuarios que realicen la misma actividad que Ines Perez Diaz.
SELECT U.NOMBRE, U.APELLIDOS FROM USUARIOS U, ACTIVIDADES_USUARIOS AU WHERE U.NUM_SOCIO=AU.CODIGO_USUARIO AND AU.CODIGO_ACTIVIDAD IN (SELECT CODIGO_ACTIVIDAD FROM ACTIVIDADES_USUARIOS WHERE CODIGO_USUARIO=(SELECT NUM_SOCIO FROM USUARIOS WHERE NOMBRE LIKE 'INES'));
7. Formato de Visualización de Usuarios
Visualiza el número de usuario, el nombre y apellidos de todos los usuarios de la siguiente forma: “El socio con número A1111 se llama Juan Luis Arias Alvarez”.
SELECT CONCAT(CONCAT ('El socio con número ', NUM_SOCIO),CONCAT(' se llama ', CONCAT(NOMBRE, CONCAT(' ',APELLIDOS)))) FROM USUARIOS;
8. Formato de Visualización de Bancos y Localidades
Visualiza el nombre de todos los bancos junto con la localidad en la que se encuentra de la siguiente forma “BANESTO está en MIERES”.
SELECT RTRIM(NOMBRE) || ' está en ' || LOCALIDAD FROM BANCOS;
9. Conteo de Usuarios del Banco ATLANTICO
Cuenta el número de usuarios que pagan a través del banco ATLANTICO.
SELECT COUNT(NUM_SOCIO) FROM USUARIOS WHERE CODIGO_BANCO=(SELECT ENT_SUC FROM BANCOS WHERE NOMBRE='ATLANTICO');
10. Cálculo de Años de Alta de Usuarios
Calcular con cuántos años se dieron de alta los usuarios (formatea la salida para que no haya decimales).
SELECT ROUND (MONTHS_BETWEEN(FECHA_NACIMIENTO,FECHA_ALTA)/12) FROM USUARIOS;
11. Formato de Visualización de Nombres y Fechas de Nacimiento
Obtener los nombres y las fechas de nacimiento de todos los usuarios de la siguiente manera: JUAN LUIS nació el día 1 de Enero de 1970
SELECT NOMBRE, TO_CHAR(FECHA_NACIMIENTO,'"nació el día "dd" de " Month" de "yyyy') FROM USUARIOS WHERE (MONTHS_BETWEEN (SYSDATE, FECHA_ALT) / 12) > 15 ;
12. Empleados con Más de 16 Años en Ventas
Seleccionar el apellido de los empleados de la tabla EMPLE que lleven más de 16 años trabajando en el departamento 'VENTAS'.
SELECT APELLIDO FROM EMPLE, DEPART WHERE MONTHS_BETWEEN (SYSDATE, FECHA_ALT) / 12 > 16 AND DNOMBRE = 'VENTAS' AND EMPLE.DEPT_NO = DEPART.DEPT_NO ;
13. Empleados con el Salario Mayor en su Departamento
Visualizar el apellido, el salario y el número de departamento de aquellos empleados de la tabla EMPLE cuyo salario sea el mayor de su departamento.
SELECT APELLIDO, SALARIO, E.DEPT_NO FROM EMPLE E, DEPART D WHERE SALARIO IN(SELECT MAX(SALARIO) FROM EMPLE WHERE DEPT_NO = E.DEPT_NO);
14. Empleados con Salario Superior a la Media de su Departamento
Visualizar el apellido, el salario y el número de departamento de aquellos empleados de la tabla EMPLE cuyo salario supere a la media en su departamento.
SELECT APELLIDO, SALARIO, DEPT_NO FROM EMPLE WHERE SALARIO > (SELECT AVG(SALARIO) FROM EMPLE WHERE DEPT_NO = EMPLE.DEPT_NO) ;