menu

miércoles, diciembre 28, 2016

SQL_Oracle_tema_3

Práctica 3-1: Uso de Funciones de Una Sola Fila para Personalizar la Salida

1) Escriba una consulta para mostrar la fecha del sistema. Etiquete la columna como Date .
Nota: si la base de datos se ubica de forma remota en una zona horaria diferente, la salida será la fecha del sistema operativo en el que reside la base de datos.


select sysdate from dual;

2) El departamento de recursos humanos necesita un informe que muestre el número de empleado, apellido, salario y salario aumentado en un 15,5% (expresado como número entero) para cada empleado. Etiquete la columna como New Salary . Guarde la sentencia SQL en un archivo denominado lab_03_02.sql .

select employee_id, last_name,salary, round(salary * 1.155) as "New Salary" from employees;

4) Modifique la consulta lab_03_02.sql para agregar una columna que reste el salario antiguo del nuevo. Etiquete la columna como Increase . Guarde el contenido del archivo como lab_03_04.sql . Ejecute la consulta revisada.

select employee_id, last_name,salary, round(salary * 1.155) as "New Salary", round(salary * 1.155)-salary as "Increase" from employees;
alternativa
select employee_id, last_name,salary, round(salary * 1.155) as "New Salary", round(salary * 0.155) as "Increase" from employees;

5) Escriba una consulta que muestre el apellido (con la primera letra en mayúsculas y el resto en minúsculas) y la longitud del apellido de todos los empleados cuyos nombres empiecen por las letras "J", "A" o "M". Proporcione a cada columna una etiqueta adecuada. Ordene los resultados por el apellido de los empleados. Vuelva a escribir la consulta para que se le solicite al usuario que introduzca la letra por la que empieza el apellido. Por ejemplo, si el usuario introduce "H" (en mayúscula) cuando se le solicita que introduzca una letra, la salida debe mostrar a todos los empleados cuyos apellidos empiecen por la letra "H".
Modifique la consulta de forma que la mayúscula/minúscula de la letra introducida no afecte a la salida. La letra introducida debe estar en mayúscula antes de que la procese la consulta SELECT .

select initcap(FIRST_NAME) as "name", length(first_name) as "Length" from employees where upper(first_name) like('J%') or upper(first_name) like('A%') or upper(first_name) like('M%') order by first_name;
alternativa
select initcap(FIRST_NAME) as "name", length(first_name) as "Length" from employees where upper(substr(first_name,1,1))=upper('&Inicial') order by first_name;

6) El departamento de recursos humanos desea buscar la duración del contrato de cada empleado. Para cada empleado, muestre el apellido y calcule el número de meses entre el día de hoy y la fecha de contratación del empleado. Etiquete la columna como MONTHS_WORKED . Ordene los resultados por el número de meses durante los que ha trabajado. Redondee el número de meses hasta el número entero más cercano.
Nota: debido a que esta consulta depende de la fecha de ejecución, los valores de la
columna MONTHS_WORKED serán diferentes.

…select last_name, round(MONTHS_BETWEEN (SYSDATE,hire_date))  as "MONTHS_WORKED" from employees order by 2;

7) Cree una consulta para mostrar el apellido y el salario de todos los empleados. Formatee el salario para que tenga 15 caracteres de longitud y tenga un relleno hacia la izquierda con el símbolo $. Etiquete la columna como SALARY .

select last_name, lpad(salary,15,'$') as salary from employees;

8) Cree una consulta que muestre los primeros ocho caracteres de los apellidos de los empleados y que indique las cantidades de sus salarios con asteriscos. Cada asterisco significa mil dólares. Ordene los datos en orden descendente de salarios. Etiquete la columna como EMPLOYEES_AND_THEIR_SALARIES .

select substr(last_name,1,8) || rpad(' ', salary/1000, '*') as "EMPLOYEES_AND_THEIR_SALARIES" from employees order by salary;

9) Cree una consulta para mostrar el apellido y el número de semanas durante las que han trabajado todos los empleados del departamento 90. Etiquete la columna de número de semanas como TENURE . Trunque el valor del número de semana en 0 decimales. Muestre los registros en orden descendente de antigüedad del empleado.
Nota: el valor TENURE variará ya que depende de la fecha de ejecución de la consulta.

select last_name, TRUNC(((SYSDATE-hire_date)/7),0) as TENURE from employees where department_id=90 ORDER BY hire_date DESC;

No hay comentarios:

Publicar un comentario