bdii-3 funciones

Upload: rouss-mell

Post on 28-Feb-2018

218 views

Category:

Documents


0 download

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

    [email protected]

  • 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