Está en la página 1de 29

ESQUEMA DE RECURSOS HUMANOS (HR) – ORACLE

El esquema HR (HUMAN RESOURCES) se instala por default en Oracle y nos permite tener un conjunto de
datos listo para crear las consultas.

Desbloquear la cuenta para el usuario HR, (Esto lo hacemos conectado con el usuario sys):

Hemos desbloqueado el esquema HR,

Creamos una conexión al esquema HR:

ORACLE - HR 1
TABLAS DEL ESQUEMA HR

ORACLE - HR 2
DESCRIPCIÓN DE LAS TABLAS HR:

Table COUNTRIES
Name Null? Type
----------------------------------------- -------- ----------------------------
COUNTRY_ID NOT NULL CHAR(2)
COUNTRY_NAME VARCHAR2(40)
REGION_ID NUMBER

Table DEPARTMENTS
Name Null? Type
----------------------------------------- -------- ----------------------------
DEPARTMENT_ID NOT NULL NUMBER(4)
DEPARTMENT_NAME NOT NULL VARCHAR2(30)
MANAGER_ID NUMBER(6)
LOCATION_ID NUMBER(4)

Table EMPLOYEES
Name Null? Type
----------------------------------------- -------- ----------------------------
EMPLOYEE_ID NOT NULL NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2(10)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)

Table JOBS
Name Null? Type
----------------------------------------- -------- ----------------------------
JOB_ID NOT NULL VARCHAR2(10)
JOB_TITLE NOT NULL VARCHAR2(35)
MIN_SALARY NUMBER(6)
MAX_SALARY NUMBER(6)

Table JOB_HISTORY
Name Null? Type
----------------------------------------- -------- ----------------------------
EMPLOYEE_ID NOT NULL NUMBER(6)
START_DATE NOT NULL DATE
END_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2(10)
DEPARTMENT_ID NUMBER(4)

Table LOCATIONS
Name Null? Type
----------------------------------------- -------- ----------------------------
LOCATION_ID NOT NULL NUMBER(4)
STREET_ADDRESS VARCHAR2(40)
POSTAL_CODE VARCHAR2(12)
CITY NOT NULL VARCHAR2(30)
STATE_PROVINCE VARCHAR2(25)
COUNTRY_ID CHAR(2)

ORACLE - HR 3
Table REGIONS
Name Null? Type
----------------------------------------- -------- ----------------------------
REGION_ID NOT NULL NUMBER
REGION_NAME VARCHAR2(25)

TABLAS DE RECURSOS HUMANOS


Países Countries
Departamentos Departments
Empleados Employees
Trabajos Jobs
Historia Laboral Job History
Ubicaciones Locations
Regiones Regions

CLÁUSULA SELECT.- Esta cláusula nos permite obtener datos de tablas que estén almacenados dentro de la
base de datos.

EXPRESIONES ARITMÉTICAS.-
Suma (+)
Resta (-)
Multiplicación (*)
División (/)

CONSULTAS CON EXPRESIONES ARITMÉTICAS (Tener en cuenta las reglas de precedencia):

ORACLE - HR 4
ALIAS (AS).- Permite renombrar las cabeceras de las columnas, es útil con los cálculos, formas de aplicar
alias:

OPERADOR DE CONCATENACIÓN.- Vincula o une columnas a otra columna:

Nota.- Cuando hablamos de alias usamos la doble comillas, pero si vamos a trabajar con los caracteres
internos que contiene una tabla, en este caso vamos a unir dos campos utilizamos las comillas simples.

OPERADOR QUOTE(q).- Funciona para establecer un propio marcador de citas, se puede seleccionar
cualquier delimitador, incrementa el uso y la lectura.

ORACLE - HR 5
PREDICADO DISTINCT.- Sirve para seleccionar SOLO los registros que sean distintos para una columna.

Vemos que ahora son más registros que la otra consulta, ocurre que DISTINCT va a operar sobre todas las
columnas que aparezcan en la definición de SELECT, tenemos 2 columnas, entonces solo va a mostrar las
combinaciones de estas 2 columnas que sean diferentes se pueden repetir ciertamente sí, pero la repetición
es basada en el grupo de las 2 columnas 110 AC_ACCOUNT es diferente de 110 AC_MGR, entonces NO
tenemos repetidos en ese conjunto, esa es la utilidad de la cláusula DISTINCT.

ORACLE - HR 6
TABLA DUAL.- La tabla DUAL es una tabla especial de una sola columna presente de manera predeterminada
en todas las instalaciones de bases de datos de Oracle. Se utiliza para seleccionar una seudo columna. El
propietario es SYS y puede ser accedida por cualquier usuario. La tabla tiene una sola columna VARCHAR2(1)
llamada DUMMY que tiene un valor de 'X'.

Esta tabla nos permite hacer SELECTS de expresiones aritméticas, de cadenas, de fechas o de cualquier
expresión que resulte en un solo valor, como por ejemplo:

ORACLE - HR 7
CLÁUSULA WHERE.- Esta cláusula nos permite restringir o filtrar filas que son obtenidas a través de la
cláusula SELECT.

OPERADOR IN.- Sirve para definir una lista de valores a comparar

ORACLE - HR 8
OPERADOR LÓGICO NOT.- Sirve para negar la condición que estemos poniendo dentro de este operador:

Esto va invertir el sentido de la comparación, si especificamos dentro de los paréntesis que el departamento
sea mayor o igual que 30, ahora como lo estamos negando con NOT el resultado van hacer los
departamentos que sean menores que 30

OPERADORES LÓGICOS AND y OR:

OPERADOR BETWEEN.- Sirve para verificar que un valor se encuentre ENTRE un rango valido que nosotros
definamos.

Es importante notar que el operador Between ofrece un rango inclusivo en ambos lados del rango

ORACLE - HR 9
OPERADOR LIKE.- Este operador se aplica a datos de tipo cadena y se usa para buscar registros, es capaz de
hallar coincidencias dentro de una cadena bajo un patrón dado.

Los caracteres Wildcards (comodines).- Son caracteres especiales que se utilizan para realizar búsquedas
especiales, como por ejemplo:

Carácter Significado
_ (Guión bajo) Reemplaza a un carácter cualquiera
% (Signo porcentaje) Reemplaza a cero o más caracteres cualquiera
[abc] Reemplaza a cualquier carácter de la lista
[^abc] o [!abc] Reemplaza a cualquier carácter excepto los caracteres de la lista

Ejemplos:

Liste los nombres que comienzan en S:

Liste los nombres finalizados en s:


Liste los nombres cuyo segundo carácter es una r:
Liste los nombres con una longitud de 5 caracteres:
Liste los nombres que contengan una t seguida por una e:
Liste los nombres que comienzan con una C y terminan en una a:

ORACLE - HR 10
OPERADOR NULL
 Null implica ausencia de datos.
 Null es diferente del valor cero o de los espacios en blanco.
 Dos valores NULL no son iguales.
 El operador IS solo es utilizado con las expresiones NULL o NOT NULL.

Liste los empleados que NO están asignados a un departamento:

INCORRECTO:

CORRECTO:

Liste los empleados que están asignados a un departamento:

ORACLE - HR 11
CLÁUSULA ORDER BY.- Sirve para ordenar los resultados de la cláusula SELECT. El ordenamiento puede ser
de forma ascendente (ASC) o de forma descendente (DESC) de forma predeterminada la ordenación es ASC.

Ejemplos:

ORACLE - HR 12
FUNCIÓN CONCAT.- Permite concatenar 2 cadenas o 2 campos que provengan de alguna tabla.

Incorrecto (No hay espacios entre los datos):

Correcto (Si hay espacios entre los datos):

NOTA.- Cuando tenemos una función dentro de otra función, la función interna es la que se ejecuta primero.

También se puede concatenar de esta manera:

ORACLE - HR 13
FUNCIÓN SUBSTR.- Sirve para extraer una subcadena de una cadena mas grande

Sintaxis: SUBSTR(cadena, inicio, longitud), el argumento inicio es inclusivo

Ejemplos:

ORACLE - HR 14
FUNCIÓN INSTR.- Sirve para encontrar un carácter o sub cadena dentro de una cadena

Sintaxis: INSTR( cadena , sub_cadena [, posicion_desde [ , ocurrencias_numero ] ] )

Sus argumentos son:


cadena: Cadena de caracteres donde se buscará la sub-cadena.
sub_cadena: Sub-cadena que se desea buscar.
posicion_desde: Posición a partir de donde se quiere buscar de la cadena.
ocurrencias_numero: Número de ocurrencia que se desea encontrar su posición.

Los argumentos posicion_desde y ocurrencias_numero, tienen un valor por defecto de 1, sino los
especificamos, siempre va empezar a buscar desde el primer carácter y la primera ocurrencia.

Su valor de retorno es un número entero que contiene la posición de la primer ocurrencia de la sub-cadena
dentro de la cadena, si no la encuentra retorna cero.

EJEMPLOS

Buscar la posición del símbolo numeral:

Buscar la posición del símbolo numeral a partir del quinto carácter:

ORACLE - HR 15
Si deseo buscar a partir del tercer carácter y quiero la cuarta ocurrencia, cuál sería el resultado?

Si deseo buscar a partir del tercer carácter y quiero la sexta ocurrencia, cuál sería el resultado?

Ejemplo de utilización de la Función INSTR en la cláusula WHERE:

Obtener la posición de la primera ocurrencia, EMPEZANDO desde el INICIO:

Obtener la posición de la primera ocurrencia, EMPEZANDO desde el ÚLTIMO (-1 ):

NOTA.- Con el 1 empieza desde el principio; Con el -1 Empieza desde el último

ORACLE - HR 16
EJEMPLO PRÁCTICO CON LAS FUNCIONES INSTR Y SUBSTR

Dba_data_files.- Son archivos físicos en la computadora en las que se guardan las tablas y demás objetos
que tenemos en la BD, estos objetos comúnmente no los vemos, porque los archivos están localizados en la
instalación por defecto, que seleccionamos para el producto de Oracle.

Consulta sobre una vista especial llamada Dba_data_file, esta es una vista del sistema y solo podemos
acceder a ella si estamos logueados como SYSTEM o con algún usuario que tenga permisos administrativos y
el ROL Sys_dba.

Y vemos los archivos que contienen toda la información de la BD, localizados en:
C:\ORACLE\APP\ORACLE\ORADATA\XE\....con distintos nombres con la extensión .DBF

Como administradores solo queremos que aparezca el nombre de los archivos DBF y no toda la ubicación:

ORACLE - HR 17
FUNCIÓN LENGTH.- Nos devuelve la longitud de una cadena.

FUNCIÓN LOWER.- Convierte la cadena en minúsculas

FUNCIÓN UPPER.- Convierta una cadena a mayúsculas

ORACLE - HR 18
FUNCIÓN INITCAP.- Convierte la primera letra de una cadena en mayúsculas y las otras en minúsculas

FUNCIONES LPAD Y RPAD.- LPAD Rellena la cadena por la izquierda y RPAD Rellena la cadena por la derecha
hasta la longitud n con el carácter definido, por defecto es blanco.

Sintaxis: LPAD y RPAD (cadena, longitud [, cadena])

ORACLE - HR 19
FUNCIÓN REPLACE.- Sirve para reemplaza una cadena de caracteres por otra nueva cadena de caracteres.

FUNCIÓN NVL.- Permite evaluar una expresión determinada, si esa expresión es nula, nos retorna el
segundo parámetro, sino es nula, nos retorna la expresión misma.

ORACLE - HR 20
FUNCIONES MATEMÁTICAS

Devuelve el entero más pequeño que sea mayor o igual que n

ABS(n) Valor absoluto de n.


CEIL(n) Entero inmediatamente superior o igual a n.
FLOOR(n) Entero inmediatamente inferior o igual a n.
MOD(m, n) Resto de la división de m por n
POWER(m, n) Calcula la potencia n-esima de m.
Calcula el redondeo de m a n decimales. Si n < 0 el redondeo se efectúa por la izquierda
ROUND(m, n)
del punto decimal.
SIGN(n) Calcula el signo de n, devolviendo -1 si n < 0, 0 si n = 0 y 1 si n > 0.
SQRT(n) Raíz cuadrada de n.
TRUNC(m,n) Calcula m truncado a n decimales (n puede ser negativo).

FUNCIÓN GREATEST.- Retorna el mayor valor de una lista de expresiones dada. Cabe destacar que aunque
su uso es más común con valores numéricos, dicha función recibe cualquier tipo de dato como parámetros,
esto es debido a que la conversión se realiza en valores Binarios.

Detalles:
 Si las expresiones que recibe la función son de tipos de datos diferentes, todas las expresiones serán
convertidas al tipo de dato de la primera expresión (si es posible).
 Si la primera es carácter, las siguientes expresiones (Números/Fechas) serán convertidas a carácter y
luego comparadas.
 Si la primera es numérica, las siguientes expresiones deben ser numéricas ya que la conversión de
(Caracteres /Fechas) a Número no es posible.
 Si la primera es una fecha, las siguientes expresiones deben ser de tipo fecha ya que la conversión de
(Caracteres /Números) a Fecha no es posible.
ORACLE - HR 21
Nota.- Los valores se acomodan de mayor a menor con respecto al acomodamiento de cadenas.

Sintaxis: GREATEST (expr1, expr2, ... exprN)

Ejemplos:

Ejemplo: Mostrar el valor mayor entre el salario y la comisión de los empleados elegibles para comisión:

FUNCIÓN LEAST.- Retorna el menor valor de una lista de expresiones dada.

ORACLE - HR 22
FUNCIÓN DECODE.- Esta función es similar a las estructuras control CASE o IF-THEN-ELSE, que sirve para
facilitar consultas condicionales. Básicamente se encarga de descifra una expresión después de compararla
con cada valor de búsqueda.

Sintaxis: DECODE(expr, búsqueda, resultado [, búsqueda, resultado ]...· [, defecto ])

Si no hay coincidencias en búsqueda oracle devuelve el valor por defecto. Si el valor por defecto se omite,
oracle devuelve un valor null.

FUNCIONES DE FILA MÚLTIPLE.- Se denominan así porque cuando se aplican, se aplican conjuntamente a un
conjunto de resultados.

Las funciones de fila única se aplican una vez PARA CADA fila. Ejemplo (UPPER – LOWER – INITCAP….etc)
Las funciones de fila múltiple se aplican una vez para TODAS las filas. Ejemplo (COUNT – SUM – AVG….etc)

COUNT.- Devuelve el número total de filas seleccionadas por la consulta.

MIN.- Devuelve el valor mínimo del campo que especifiquemos.

ORACLE - HR 23
MAX.- Devuelve el valor máximo del campo que especifiquemos.

SUM.- Suma los valores del campo que especifiquemos. Sólo se puede utilizar en columnas numéricas.

Formas de Sumar un valor Constante para el total de empleados que existe:

Cuantos son los años que han trabajado todos los miembros de la compañía desde que ingresaron hasta el
momento actual:

AVG.- Devuelve el valor promedio del campo que especifiquemos. Sólo se puede utilizar en columnas
numéricas.

ORACLE - HR 24
Obtener el promedio de años trabajados de los empleados en el área de programación:

CLÁUSULA GROUP BY.- Sirve para realizar agrupaciones por medio de grupos que cumplan con una
característica única.

Hasta el momento las funciones de agregación (COUNT, SUM, AVG, MIN y MAX) trabajan sobre un único
grupo que es total de filas que coinciden con alguna condición dentro de una tabla.

Si queremos agrupar en grupos específicos lo podemos hacer con la cláusula group by.

Mostrar cuantos empleados gana un sueldo específico:

Mostrar el promedio del salario pero por cargo:

ORACLE - HR 25
Mostrar el número de países por región:

Mostrar los empleados que han renunciado por cada año:

Mostrar el total de comisiones por cada departamento:

ORACLE - HR 26
Mostrar dentro de cada departamento los puestos específicos para los que trabajan los empleados que
me dan ese total, lo puedo hacer con una segunda agrupación dentro de la cláusula group by

Enunciado del Ejercicio: Crear un reporte que contenga el número de empleados que han dejado sus
trabajos agrupados por el año en el cual se fueron. Los trabajos que realizaban también deben mostrarse, los
resultados deben ser ordenados en forma descendente basado en el número de empleados en cada grupo,
el reporte de listar el año, el código del cargo y el número de empleados que dejaron un particular trabajo
ese año:

Seleccionar la longitud del nombre más largo y más corto de los empleados que sean representantes de
ventas:

ORACLE - HR 27
CLÁUSULA HAVING.- Sirve para filtrar o restringir los resultados de las consultas basados en grupos.

Ejemplo: Mostrar el promedio de los salarios y el conteo de empleados por cada uno de sus puestos de
trabajo:

Ejemplo: Mostrar el promedio de los salarios y el conteo de empleados por cada uno de sus puestos de
trabajo PERO SOLO se desea ver aquellos puestos que tengan un promedio mayor a $10.000:

Ejemplo: Mostrar el promedio de los salarios y el conteo de empleados por cada uno de sus puestos de
trabajo pero solo los puestos que tengan un promedio mayor a $10.000 Y cuando el conteo de empleados
sea mayor a 1:

ORACLE - HR 28
Ejercicio: Identificar los días de la semana en los cuales 15 o más miembros del Staff fueron contratados, el
reporte debe listar los días y el número de empleados contratados en cada uno de ellos:

ORACLE - HR 29