bdii-3 funciones
TRANSCRIPT
-
7/25/2019 bdII-3 funciones
1/16
FACULTAD DE INGENIERIA DE SISTEMAS, CMPUTO Y TELECOMUNICACIONES
Funciones de Base de Datos
Mg. Christian Almguer Martnez
-
7/25/2019 bdII-3 funciones
2/16
AGENDA
Funciones en la Base de Datos.
Funciones de Grupos.
Expresiones de Grupos.
-
7/25/2019 bdII-3 funciones
3/16
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
-
7/25/2019 bdII-3 funciones
4/16
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
-
7/25/2019 bdII-3 funciones
5/16
Cadenas de Caracteres
Substr (cad,ini,long): devuelve la subcadena de lacadena 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
-
7/25/2019 bdII-3 funciones
6/16
Operacin Aritmtica con Fechas
Agregando o substrayendo a una fecha un numerode das, se obtendr una nueva fecha.
Fecha + numero_das
select sysdate + 2 from dual
Fecha numero_diasselect sysdate - 4 from dual
Restando dos fechas: se obtendr el numero de das
que hay entre ambas.select sysdate hire_date
from employees
-
7/25/2019 bdII-3 funciones
7/16
Funciones de Fechas
Sysdate, retorna la fecha del sistema.
Select sysdate from dual
Add_Months, devuelve una fecha incrementada
enn meses.
ADD_MONTHS( fecha, n)
Select add_months(sysdate,4) from dual
-
7/25/2019 bdII-3 funciones
8/16
To_Char
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
To_char: convierte una fecha a cadena.To_char (fecha, [ mascara ])
-
7/25/2019 bdII-3 funciones
9/16
Conversiones
NVL, sustituye un valor cuando un null esencontrado.
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 yla comisin sin mensaje de error.
-
7/25/2019 bdII-3 funciones
10/16
Funciones de Grupos
-
7/25/2019 bdII-3 funciones
11/16
Funciones de Grupos
FUNCION EJEMPLO DESCRIPCION
AVGAVG(salary) Valor promedio de SALARIO
COUNT
COUNT(employee_id)
COUNT(*)
Obtiene el numero de valoresno nulos en la columna
Employee_id
Se obtiene el numero deregistros de una tabla
MAXMAX(salary) Mximo valor de Salary
MIN MIN(salary) Mnimo valor de Salary
SUMSUM(salary) Suma de los valores Salary
-
7/25/2019 bdII-3 funciones
12/16
Ejemplos:
Mostrar el promedio y el salario ms alto para todoscdigos de puestos que sea ST_CLERK de la tabla Employees.
SELECT AVG(salary), MAX(salary)
FROM employeesWHEREjob_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
-
7/25/2019 bdII-3 funciones
13/16
GROUP BY (de una columna)
Mostrar los cdigos de los departamentos y el nmero depersonas agrupados por departamento para la tabla
Employees.
SELECT DEPARTMENT_ID, COUNT(*)
FROM EmployeesGROUP BY DEPARTMENT_ID
NOTA : Si se selecciona al mismo tiempo una columna
normal y una funcin de grupo esto producir ERROR.
SELECT First_name, MAX(Salary)
FROM employees
Ejemplo: Ejecutar la siguiente sentencia:
-
7/25/2019 bdII-3 funciones
14/16
GROUP BY (de ms de una columna)
Ejemplo: Mostrar el cdigo del departamento para cadapuesto 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
-
7/25/2019 bdII-3 funciones
15/16
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_idHAVING COUNT(*) > 2
-
7/25/2019 bdII-3 funciones
16/16
HAVING
La clusula HAVING puede ser usada en la mismaconsulta 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 delpuesto. 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