Functions: Document Prepared by
Functions: Document Prepared by
1 .SINGLE ROW FUNCTION - THIS FUNCTION PERFORM ACTION ON SINGLE ROW (INPUT VALUES 1) 2. MULTPLE ROW FUNCTION THIS FUNCTION PERFORM ACTION ON SOME SET OF ROWS (INPUT VALUES > 1) SINGLE ROW FUNCTIONS
1.CHARACTER FUNCTION
CASE FUNCTION
UPPER( ) LOWER( ) INITCAP( ) CONCAT( ) SUBSTR( ) INSTR( ) LENGTH( ) LPAD | RPAD ( ) REPLACE( ) TRANSLATE( ) TRIM( )
CHARACTER FUNCTION
2.NUMBER FUNCTION`
3.DATE FUNCTION
4.CONVERSION
5.GENERAL FUNCTION
CONTROL STATEMENTS
DECODE CASE
MULIPLE ROW FUNCTIONS GROUP FUNCTION AGGRECATING FUNCTION MIN( ) MAX( ) SUM( ) AVG( ) COUNT( )
GROUP BY HAVING
1. CHARACTER FUNCTION
CASE MANUPLICATION CASE FUNCTIONS UPPER(MY DOCUMENT) LOWER(MY DOCUMENT) INITCAP(MY DOCUMENT) RESULT MY DOCUMENT my document My Document
SELECT UPPER('my first query'),LOWER('my first query'),INITCAP('my first query') from dual;
CHARACTER MANUPLICATION CONCAT ( ) SUBSTR ( ) INSTR ( ) LPAD | RPAD ( ) REPLACE ( ) TRANSLATE ( ) LTRIM | RTEIM ( )
2. NUMBER FUNCTIONS ROUND ( ) TRUNC ( ) MOD ( ) POWER ( ) ROUND ( ) SELECT ROUND (23.446, 2), ROUND (23.444, 2) FROM DUAL;
TRUNC ( ) SELECT TRUNC (234.5678, 2) FROM DUAL; SELECT TRUNC (234.5678, 3) FROM DUAL; SELECT TRUNC (234.5678, 0) FROM DUAL;
MOD ( ) SELECT MOD (12, 5) FROM DUAL; SELECT MOD (12, 2) FROM DUAL; SELECT MOD (12,-5) FROM DUAL; SELECT MOD (-12, 5) FROM DUAL; POWER ( ) SELECT POWER (2, 2) FROM DUAL; SELECT POWER (5, 2) FROM DUAL; RESULT: 4 RESULT: 25 RESULT: 2 RESULT: 0 RESULT: 2 RESULT: -2
SYSDATE + -
SELECT SYSDATE FROM DUAL; SELECT SYSDATE+1 FROM DUAL; SELECT SYSDATE-1 FROM DUAL;
MONTHS_BETWEEN
THERE IS NO OTHER FUNCTION TO FIN DOUT THE YEAS BETWEEN SO WE USE MONTHS_BETWEEN/12
ADD_MONTHS
SELECT ADD_MONTHS ('12-FEB-11', 1) FROM DUAL; SELECT ADD_MONTHS ('12-FEB-11', 2) FROM DUAL;
SELECT ADD_MONTHS ('12-FEB-11',-1) FROM DUAL; SELECT ADD_MONTHS ('12-FEB-11',-2) FROM DUAL;
NEXT_DAY
SELECT NEXT_DAY ('31-JUL-11','WEDNESDAY') FROM DUAL; SELECT NEXT_DAY ('31-JUL-11','FRIDAY') FROM DUAL;
LAST_DAY SELECT LAST_DAY (SYSDATE) FROM DUAL; SELECT LAST_DAY ('21-FEB-11') FROM DUAL; SELECT LAST_DAY ('21-FEB-00') FROM DUAL; SELECT LAST_DAY ('21-JAN-11') FROM DUAL;
4. TYPE CONVERSIONS
TO_NUMBER
TO_DATE ( )
IF I WRITE THE ABOVE QUERY BY USING THE DATE IN THIS FORMAT '21-SEP1988'
SELECT FIRST_NAME, LAST_NAME, SALARY, HIRE_DATE FROM EMPLOYEES WHERE HIRE_DATE = TO_DATE ('21-SEP-1989','DD-MM-YYYY');
SELECT FIRST_NAME, LAST_NAME, SALARY, HIRE_DATE FROM EMPLOYEES WHERE HIRE_DATE=TO_DATE ('SEP-21-1989','MM-DD-YYYY');
TO_CHAR
DD MM MON
- DATE - TO SHOW THE MONTH LIKE THIS (07) - TO SHOW THE MONTH LIKE THIS (JUL)
MONTH - TO SHOW THE MONTH LIKE THIS (JULY) YY - TO SHOW THE YEAR LIKE THIS (11)
YYYY - TO SHOW THE YEAR LIKE THIS (2011) YEAR - TO SHOW THE YEAR LIKE THIS ()
SELECT TO_CHAR (SYSDATE,'DD') FROM DUAL; SELECT TO_CHAR (SYSDATE,'MM') FROM DUAL; SELECT TO_CHAR (SYSDATE,'MONTH') FROM DUAL; SELECT TO_CHAR (SYSDATE,'YY') FROM DUAL; SELECT TO_CHAR (SYSDATE,'YYYY') FROM DUAL; SELECT TO_CHAR (SYSDATE,'YEAR') FROM DUAL;
DDTH SELECT TO_CHAR (SYSDATE,'DDTH') FROM DUAL; 5. GENERAL FUNCTIONS NVL ( ) NVL2 ( ) NULIF ( ) COALSCE ( )
NVL - NVL ACCEPT TWO ARGUMENTS IF THE VALUE OF FIRST ARGUMENT IS NULL MEANS IT CAN BE REPLACE BY THE SECOND VALUE ELSE IT DISPLAY THE FIRST ARGUMENTS
NVL2 - IT CONTAIN 3 ARGUMENT IF THE VALUE OF THE FIRST ARGUMENT IS NULL MEANS IT DISPLAY THE THIRD ARGUMENT ELSE IT DISPLAY THE SECOND ARGUMENT
NULLIF ACCEPT TWO ARGUMENTS IF BOTH THE VALUES ARE SAME MEANS IT RETURN NULL VALUE ELSE RETURN THE VALUE OF THE FIRST ARGUMENT
SELECT NULLIF (1, 1) FROM DUAL; SELECT NULLIF (2, 1) FROM DUAL; SELECT NULLIF (1, 2) FROM DUAL;
2 1
COALESEC
SELECT COALESCE (NULL, NULL, NULL, 45, NULL, NULL) FROM DUAL; CONTROL STATEMENTS DECODE CASE DECODE IT IS A FUNCTION OPERATOR ARE NOT ALLOWED TO USED INSIDE THE DECODE STATEMENT IF THE VALUE IS EXACTLY MATCHED THEN ONLY IT RETURN THE VALUE SELECT DISTINCT (DEPARTMENT_ID), DECODE (DEPARTMENT_ID, 10,'IT', 20,'BPO', 30,'KPO', 40,'ADMIN', 50,'HR','NILL') FROM EMPLOYEES
CASE
SELECT DISTINCT (DEPARTMENT_ID), CASE WHEN DEPARTMENT_ID = 10 THEN 'IT' WHEN DEPARTMENT_ID IN (20, 30) THEN 'BPO' WHEN DEPARTMENT_ID BETWEEN 40 AND 70 THEN 'KPO' ELSE 'XXX' END AS "DEPARTMENT_NAME" FROM EMPLOYEES ORDER BY 1;
ADVANTAGE OF USING CASE WE USE ALL OPERATORS WRITTEN IN MULTIPLE LINE FAST EXECUTION COMPARE TO DECODE
GROUP FUNCTIONS
MIN ( ) MAX ( ) SUM ( ) COUNT ( ) AVG ( )
INSERT INTO AVG VALUES (25); INSERT INTO AVG VALUES (25); INSERT INTO AVG VALUES (25); INSERT INTO AVG VALUES (25);
100/5 = 20 BUT IT SHOWS 25 SO AVG () NOT CONSIDER NULL VALUES. INORDER TO AVOID IT WE USE NVL FUNCTION
GROUP BY: IF YOU WANT TO SELECT ANY COLUMN WITH THE GROUP FUNCTION YOU HAVE TO GROUP THE COLUMN BY USING THE CLAUSE GROUP BY HAVING IS A CLAUSE USED BY GROUP FUNCTIONS WHILE IMPLEMENTING THE CONDITION SELECT DEPARTMENT_ID, MAX (SALARY) FROM EMPLOYEES
SELECT DEPARTMENT_ID, COUNT (DEPARTMENT_ID) A, CASE WHEN COUNT (DEPARTMENT_ID) = 45 THEN 'FIRST_RANK' WHEN COUNT (DEPARTMENT_ID) = 34 THEN 'SECOND_RANK' END FROM EMPLOYEES GROUP BY DEPARTMENT_ID HAVING COUNT (DEPARTMENT_ID) > 30;
ORDER OF CLAUSEES SELECT DEPARTMENT_ID, COUNT (EMPLOYEE_ID) FROM EMPLOYEES WHERE SALARY > 2000 GROUP BY DEPARTMENT_ID HAVING
---------------------------------------------------------------------------------------------------------------------