Está en la página 1de 41

Funciones pre definidas por Oracle

Ing. Marcos Montesinos pmmontes@cibertec.edu.pe

Sesin 4
Puntos a Tratar
1. Funciones predefinidas de Oracle

2. Funciones de Caracter
3. Funciones de Numero 4. Funciones de Fecha

5. Funciones de Conversin
6. Funciones de Grupo

martes, 26 de marzo de 2013

Sesin 4
Logros 1. El alumno podr utilizar adecuadamente el Lenguaje SQL para manipular informacin en una BD ORACLE. 2. El alumno conocer las funciones predefinidas en una BD ORACLE

martes, 26 de marzo de 2013

Sesin 4

Funciones predefinidas de Oracle

martes, 26 de marzo de 2013

Instrucciones DML - Funciones Predefinidas

Funciones de Carcter : (Conversion)

Funcin
LOWER (sql course)
select lower(ename) from emp;

UPPER (sql course)


select upper(dname) from dept;

INITCAP (sql course)


select initcap(Loc) from dept;
martes, 26 de marzo de 2013

Funciones de Carcter(Conversin)

Mostrar el nombre del empleado en minusculas y el nombre de sus localidad con la primera letra en mayscula.

martes, 26 de marzo de 2013

Instrucciones DML - Funciones Predefinidas

Funciones de Carcter :

Funcin
CONCAT (Hola,como estas )
2 Columnas

select concat(desplat,codplat) from tbplatillos;


SUBSTR (Profesor,1,3) LENGTH (Hola) INSTR (Amigos,g) LPAD (salario,10,*)

TRIM ( Hola a todos )


martes, 26 de marzo de 2013

Funciones de Caracter

Ejercicios:
Mostrar el segunto ,tercero , cuarto y penltimo caracter del nombre de los empleado pero en minuscula

Rellenar el nombre de los empleados y el nombre de la localidad con 15 caracteres utilizando el simbolo $ teniendo el cuenta el lado derecho
Mostrar el siguiente formato

martes, 26 de marzo de 2013

Instrucciones DML - Funciones Predefinidas

Funciones nmericas :
Funcin
ROUND

Ejemplo
ROUND(45.926,2)

Resultado 45.93

select sal/7 Salario,round(sal/7,2) Redondeo, trunc(sal/7,2) Trunca from emp;

TRUNC MOD
martes, 26 de marzo de 2013

TRUNC(45.926,2) MOD (1600,300)

45.92 100
9

Funciones de Caracter

Ejercicios:
Mostrar el nombre y la novena parte (con 3 decimales) del sueldo de los empleados cuyo sueldo es mayor a 1500

Mostrar el residuo del sueldo dividido entre dos de todos los empleados cuyo sueldos son mayores a 500 Mostrar el sueldo entre 7 con 1 decimal y el sueldo entre 3 con dos decimales.
martes, 26 de marzo de 2013

10

Instrucciones DML - Funciones Predefinidas Funciones de Fecha : Dual : Tabla sistema (memora)
Funcin Resultado
1.23

MONTHS_BETWEEN(Sysdate+40,sysdate)
ADD_MONTHS(sysdate,6) ADD_MONTHS(sysdate,6) LAST_DAY(sysdate) ltimo dia de la semana ROUND(sysdate,MONTH)

14/09 19/03 31/03 01/03

ROUND(sysdate,YEAR)
TRUNC(sysdate,MONTH)
martes, 26 de marzo de 2013

01/01/2012
01/01/2012
11

Instrucciones DML - Funciones Predefinidas

Funciones de Fechas :

SQL> SELECT SYSDATE FECHA _ACTUAL,ADD_MONTHS(SYSDATE,4)


AGREGAR_MES , NEXT_DAY(SYSDATE,3) FECHA_DIA_SEMANA FROM DUAL;

martes, 26 de marzo de 2013

12

Mostrar la fecha de hoy , la fecha

Propuestos

de hoy incrementada en 4 meses y la fecha del primer da de la siguiente semana.

martes, 26 de marzo de 2013

13

Instrucciones DML - Funciones Predefinidas Funcin LEAST( ) :

Retorna el menor valor de las lista de expresiones. Sintaxis:


LEAST(expres 1, expres 2, expres 3,.., expres n )

martes, 26 de marzo de 2013

14

Instrucciones DML - Funciones Predefinidas

Funcin LEAST( ) :
Ejemplo 1:

SQL> SELECT LEAST( 10, 5, 45 ) menor FROM DUAL ;


MENOR ----------5

SQL> SELECT LEAST( comm,sal ) menor FROM emp ;

martes, 26 de marzo de 2013

15

Instrucciones DML - Funciones Predefinidas Funcin GREATEST( ) : Valor mximo.


Ejemplo1: SQL> SELECT GREATEST(SYSDATE, to_date(05/05/2006, 'dd/mm/yyyy ) ) FROM DUAL ;
FECHA -----------

?
martes, 26 de marzo de 2013

16

Instrucciones DML Conversin Datos Explisitos

FUNCIONES DE CONVERSION
TO_CHAR ()

TO_NUMBER ()

TO_DATE ()

martes, 26 de marzo de 2013

17

Instrucciones DML Conversin Datos Explisitos

FUNCIONES DE CONVERSION
TO_NUMBER (d,fmto)

Convierte la cadena d a un nmero, opcionalmente de acuerdo con el formato fmto.

select to_number('12345') from dual;


Resultado
martes, 26 de marzo de 2013

124345

18

Instrucciones DML Conversin Datos Explisitos

FUNCIONES DE CONVERSION
TO_DATE(cad,fmto)

Convierte la cadena cad de tipo varchar2 a fecha, opcionalmente de acuerdo con el formato fmto.

select to_date('1-JAN-97') from dual SELECT GREATEST(1-JAN97,05/05/2006) ) FROM DUAL ; 01-JAN-97 Resultado
martes, 26 de marzo de 2013

19

Instrucciones DML Conversin Datos Explisitos

FUNCIONES DE CONVERSION
TO_CHAR (d, fmto)

Convierte la fecha d a una cadena de caracteres, opcionalmente de acuerdo con el formato fmto.

select to_char(sysdate) from dual;


Resultado
martes, 26 de marzo de 2013

'14-MAR-97'

20

Instrucciones DML Conversin Datos Explisitos

Funciones de TO_CHAR( ) :
TO_CHAR con Fecha :
Formato YYYY YEAR

TO_CHAR(fecha,formato)
Descripcin Ao completo en nmero Ao en texto

MM
MONTH DY DAY
martes, 26 de marzo de 2013

Valor dos dgitos para el mes


Nombre completo del mes Abreviatura (3 letras)Dia Nombre Dia en texto
21

Instrucciones DML - Funciones Predefinidas Funcin To_Char :


Ejemplo2:

SQL> select to_char(hiredate,'MM/YYYY') from emp; SQL> select to_char(sysdate,'YYYY-MM-DD HH:MI:SS') fecha from dual;

martes, 26 de marzo de 2013

22

Funciones de Caracter
Utilizando la tabla emp.hiredate

martes, 26 de marzo de 2013

23

Funciones de Caracter

Pensar - Solucin:

Utilizar la tabla emp.hiredate


martes, 26 de marzo de 2013

24

Funciones de Caracter

Pensar - Solucin:
Utilizar la tabla emp.hiredate

martes, 26 de marzo de 2013

25

Instrucciones DML - Funciones Predefinidas Funciones de TO_CHAR( ) :


To_Char con nmeros Formato Descripcin Presenta un nmero

0
$ L . ;
martes, 26 de marzo de 2013

Fuerza que O se muestre


Coloca signo de dolar Utiliza simbolo de moneda Imprime Simbolo Decimal Imprime indicador de miles
26

Instrucciones DML - Funciones Predefinidas Funcin TO_CHAR( ) :


To_Char con nmeros

Ejemplo2:

SQL> SELECT TO_CHAR(SAL,'$99,999')Salario from emp where ename='SCOTT';

martes, 26 de marzo de 2013

27

Instrucciones DML - Funciones Predefinidas

Funcin NVL( ) :
Convierte un nulo a un valor que puede ser un nmero , un carcter o una fecha.
NVL(COMM,0) Select nvl(comm,0) COMISION from emp;
NVL(hiredate,01-JAN-97) select nvl(hiredate,01-JUN-97) CONTRATOS from emp;

NVL(job,no tiene cargo)


select nvl(job,no existe) CARGOS from emp;
martes, 26 de marzo de 2013

28

Instrucciones DML - Funciones Predefinidas

Funcin DECODE( ) :
Envia un resultado dependiendo de el valor de una variable.

SQL>select decode(user,'SCOTT','USTED ES SCOTT','SYS','ES ADMINISTRADOR','NO ES CONOCIDO') RESULTADO FROM DUAL;


USTED ES SCOTT

RESULTADO

martes, 26 de marzo de 2013

29

Instrucciones DML Funciones de Grupo

FUNCIONES DE GRUPO
AVG()
MAX()

MIN () SUM()
STDDEV

VARIANCE
martes, 26 de marzo de 2013

30

Instrucciones DML Funciones de Grupo

FUNCIONES DE GRUPO
Estas funciones operan en grupos de registros para entregar un resultado por grupos. Estas funciones son:

SELECT [ column, ] group_function (column)


FROM [ WHERE table condition ]

[ GROUP BY column ]
[ ORDER BY column ] ;

martes, 26 de marzo de 2013

31

Instrucciones DML - Funciones Predefinidas Funciones Grupo : Operan en grupos de registros y retornan grupos de registros.
Funcin
AVG
COUNT
MAX

Resultado

(Select avg(sal) from emp;)


(Select count(ename) from emp;
(Select count(ename) from emp;

Promedio
Cuenta Mximo Minimo Suma
32

MIN

(Select min(sal) from emp;

SUM

(Select sum(sal) from emp;

martes, 26 de marzo de 2013

Instrucciones DML Funciones de Agrupamiento Error Comn :

ORA-00979: NOT A GROUP BY EXPRESSION

Esto debido al modo que tiene ORACLE de analizar las consultas agrupadas: lo que hace es comprobar que todos las columnas incluidos en la clusula select fuera de funciones sumarias, estn dentro de la clsula group by. Si encuentra alguna columna en el select( que no este dentro de una funcin sumaria) que no aparezca en el group by, entonces nos retorna el error anterior.
martes, 26 de marzo de 2013

33

Instrucciones DML Funciones de Grupo


Ejemplo 1:
Mostrar el promedio de los salarios agrupados por departamento

SQL> SELECT deptno, AVG(sal) FROM emp


GROUP BY deptno ;
DEPTNO -----10 20 30 AVG(SAL) ---------2916.66666666667 2175 1566.66666666667
34

Resultado

martes, 26 de marzo de 2013

Instrucciones DML Funciones de Grupo


Ejemplo 2:

Mortar la sumatoria de salarios agrupado por departamento y por cargo.


SQL> SELECT deptno, job, sum(sal) FROM emp GROUP BY deptno, job ;
DEPTNO JOB SUM(SAL) ----------- --------------- ---------10 CLERK 1300 10 MANAGER 2450 10 PRESIDENT 5000 20 ANALYST 6000 20 CLERK 1900 20 MANAGER 2975 30 CLERK 950 30 MANAGER 2850 30 SALESMAN 5600
35

Resultado

martes, 26 de marzo de 2013

Instrucciones DML Funciones de Grupo


ROLLUP, CUBE DEPTNO JOB ------ --------------10 CLERK 10 MANAGER 10 PRESIDENT 10 20 ANALYST 20 CLERK 20 MANAGER 20 30 CLERK 30 MANAGER 30 SALESMAN 30 SUM(SAL) ------------1300 2450 5000 8750 6000 1900 2975 10875 950 2850 5600 9400 29025
36

Estos comandos se utilizan

para totalizar los grupos de


Datos. Solamente una porcin de combinaciones Ejemplo:

SQL> SELECT deptno, job,


sum(sal) FROM emp GROUP BY

ROLLUP(deptno,job) ;
martes, 26 de marzo de 2013

Instrucciones DML Funciones de Grupo


ROLLUP, CUBE
DEPTNO JOB SAL ------ --------------- ----------

29025
CLERK ANALYST MANAGER SALESMAN PRESIDENT 4150 6000 8275 5600 5000
1300 2450 5000 8750 6000 1900 2975 10875 950 2850 5600 9400

Ejemplo: Retorna el total de todas las

Combinaciones posibles
(Referecia Cruzada) Ejemplo: SQL> SELECT deptno, job, sum(sal) FROM emp GROUP BY CUBE (deptno, job) ;

martes, 26 de marzo de 2013

10 CLERK 10 MANAGER 10 PRESIDENT 10 20 ANALYST 20 CLERK 20 MANAGER 20 30 CLERK 30 MANAGER 30 SALESMAN 30

37

Instrucciones DML Funciones de Grupo


HAVING

Se utiliza HAVING para excluir resultados de grupos.


SINTAXIS: SELECT [ column, ] group_function (column) FROM [ WHERE table condition ]

[ GROUP BY column ]

[ HAVING column ]
[ ORDER BY column ] ;
martes, 26 de marzo de 2013

38

Instrucciones DML Funciones de Grupo


Ejemplo : SQL> SELECT deptno, max(sal) FROM emp GROUP BY deptno HAVING max(sal) >2900 ;
DEPTNO MAX(SAL) --------------10 5000 20 3000 50 3000

martes, 26 de marzo de 2013

39

Instrucciones DML - Funciones de Grupo Funciones de Grupo :

SQL> select deptno ,avg(sal) from emp Group by deptno;

SQL> select deptno, job, sum(sal) from emp group by deptno, job ;

martes, 26 de marzo de 2013

40

Fin de la Sesin

martes, 26 de marzo de 2013

41

También podría gustarte