Sunteți pe pagina 1din 16

FACULTAD DE INGENIERIA DE SISTEMAS, CMPUTO Y TELECOMUNICACIONES

Funciones de Base de Datos


Mg. Christian Almguer Martnez
almoguer@uigv.edu.pe

AGENDA

Funciones en la Base de Datos.


Funciones de Grupos.
Expresiones de Grupos.

Funciones Aritmticas

Round (n) : redondeo de m a n decimales.


Select round(21.564,1) from dual 21.6

Trunc (m,n) : calcula m truncado a n decimales.


Select trunc(3.323, 1) from dual
3.3

Cadenas de Caracteres

Concat (cad1,cad2) : concatena cadenas.


Select concat (Oracle, 11g) from dual
Oracle 11g

Concatenar con ||: permite unir cadena de textos.


Select first_name || su salario es || salary
from employees

Length (cad): retorna la longitud de la cadena.


Select length(Informtica) from dual
11

Cadenas de Caracteres

Substr (cad,ini,long): devuelve la subcadena de la


cadena compuesta por la longitud de caracteres a partir
de la posicin inicio.
Select substr(Oracle,3,2 ) from dual ac

Upper (cad) : devuelve una cadena en mayscula.


Select upper (sistemas) from dual SISTEMAS

Operacin Aritmtica con Fechas

Agregando o substrayendo a una fecha un numero


de das, se obtendr una nueva fecha.
Fecha + numero_das
select sysdate + 2 from dual
Fecha numero_dias
select sysdate - 4 from dual

Restando dos fechas: se obtendr el numero de das


que hay entre ambas.
select sysdate hire_date
from employees

Funciones de Fechas

Sysdate, retorna la fecha del sistema.


Select sysdate from dual

Add_Months, devuelve una fecha incrementada


en n meses.
ADD_MONTHS( fecha, n)

Select add_months(sysdate,4) from dual

To_Char
To_char: convierte una fecha a cadena.
To_char (fecha, [ mascara ])
Select to_char(sysdate,yyyy)
From dual
2011
Select to_char(sysdate,q) [ trimestre del ao]
From dual
1
Select to_char(sysdate,mm) [mon, month, rm, ww]
From dual
01
Select to_char(sysdate,dd) [day, dy, dd, ddd ]
From dual
7
Select to_char(sysdate,hh) [ hh12, hh24, mi, ss ]
From dual
10

Conversiones

NVL, sustituye un valor cuando un null es


encontrado.
nvl( cadena, reemplazar_con )
Select nvl( COMMISSION_PCT ,0) from employees
Muestra el valor del campo o
muestra cero cuando encuentre
un null en el campo.
Select salary+ salary * nvl(COMMISSION_PCT, 0)
from employees
Muestra la suma del salario y
la comisin sin mensaje de error.

Funciones de Grupos

Funciones de Grupos
FUNCION

EJEMPLO

DESCRIPCION

AVG

AVG(salary)

Valor promedio de SALARIO

COUNT(employee_id)

Obtiene el numero de valores


no nulos en la columna
Employee_id
Se obtiene el numero de
registros de una tabla

COUNT
COUNT(*)

MAX
MIN
SUM

MAX(salary)

Mximo valor de Salary

MIN(salary)

Mnimo valor de Salary

SUM(salary)

Suma de los valores Salary

Ejemplos:
Mostrar el promedio y el salario ms alto para todos
cdigos de puestos que sea ST_CLERK de la tabla Employees.
SELECT AVG(salary), MAX(salary)
FROM employees
WHERE job_id=ST_CLERK
Mostrar el numero de registros de la tabla Employees, y el
numero de empleados con comisin no nula.
SELECT COUNT(*), COUNT(COMMISSION_PCT)
FROM Employees

GROUP BY (de una columna)


Mostrar los cdigos de los departamentos y el nmero de
personas agrupados por departamento para la tabla
Employees.
SELECT DEPARTMENT_ID, COUNT(*)

FROM Employees
GROUP BY DEPARTMENT_ID
Ejemplo: Ejecutar la siguiente sentencia:

SELECT First_name, MAX(Salary)


FROM employees
NOTA : Si se selecciona al mismo tiempo una columna
normal y una funcin de grupo esto producir ERROR.

GROUP BY (de ms de una columna)


Ejemplo: Mostrar el cdigo del departamento para cada
puesto dentro de cada departamento y el numero de
registros asignados. Ordene su salida por cdigo de
departamento empleando posicin de columna.

SELECT DEPARTMENT_ID, JOB_ID, COUNT(*)


FROM Employees
GROUP BY DEPARTMENT_ID, JOB_ID
ORDER BY 1

HAVING
Permite definir una condicin en la expresin GROUP.

Ejemplo: Mostrar el puesto y el salario promedio para


todos los puestos con ms de dos empleados.
SELECT Job_id, AVG(Salary)
FROM Employees
GROUP BY Job_id
HAVING COUNT(*) > 2

HAVING
La clusula HAVING puede ser usada en la misma
consulta con la clusula WHERE.
Ejemplo: Mostrar el departamento y la nomina para aquellos
departamentos con nomina excediendo 10000, excluyendo
aquellos cuya cadena termine en CLERK en el cdigo del
puesto. Ordnelos por la cantidad de nomina.
SELECT DEPARTMENT_ID, sum (salary)
FROM employees
WHERE Job_id not like %CLERK
GROUP BY DEPARTMENT_ID
HAVING sum (salary) > 10000
ORDER BY 2

S-ar putea să vă placă și