GENRAL FUNCTION:
****************
NVL(EXPR1,EXPR2)
NVL2(EXPR1,EXPR2,EXPR3)
NULLIF(EXPR1,EXPR2)
COALESCE(EXPR1,EXPR2,....EXPRN)
NVL FUN:(EXPR1,EXPR2)
*********************
CONVERTS
A NULL VALUE TO AN ACTUAL VALUE
THE
DATA TYPE OF THE SOURES AND DESTINATION MUST MATCH.
NVL(COMM,0)
NVL(HIRADATE,'01-JAN-12')
NVL(JOB,'NOT
ASSIGNED')
SELECT ENAME,SAL,NVL(COMM,0)FROM EMP;
ENAME SAL NVL(COMM,0)
SMITH 800 0
ALLEN 1600 300
WARD 1250 500
JONES 2975 0
MARTIN 1250 1400
BLAKE 2850 0
CLARK 2450 0
SCOTT 3000 0
KING 5000 0
TURNER 1500 0
ADAMS 1100 0
JAMES 950 0
FORD 3000 0
MILLER 1300 0
NOTE:-IF
EXPR1 IS NOT NULL THE NVL FUN RETURNS EXPR1,IF EXPR1 IS NULL THE NVL FUN
RETURNS EXPR2.
----
SELECT
ENAME,SAL,NVL(COMM,0),(SAL*12)+(SAL*12*COMM) AN_SAL FROM EMP;
ENAME SAL NVL(COMM,0) AN_SAL
SMITH 800 0 9600
ALLEN 1600 300 19200
WARD 1250 500 15000
JONES 2975 0 35700
MARTIN 1250 1400 15000
BLAKE 2850 0 34200
CLARK 2450 0 29400
SCOTT 3000 0 36000
KING 5000 0 60000
TURNER 1500 0 18000
ADAMS 1100 0 13200
JAMES 950 0 11400
FORD 3000 0 36000
MILLER 1300 0 15600
SELECT ENAME,SAL,NVL(COMM,0),(SAL*12)+(SAL*12*COMM)
AN_SAL FROM EMP;
ENAME SAL NVL(COMM,0) AN_SAL
SMITH 800 0
ALLEN 1600 300 5779200
WARD 1250 500 7515000
JONES 2975 0
MARTIN 1250 1400 21015000
BLAKE 2850 0
CLARK 2450 0
SCOTT 3000 0
KING 5000 0
TURNER 1500 0 18000
ADAMS 1100 0
JAMES 950 0
FORD 3000 0
MILLER 1300 0
NVL2 FUN:(EXPR1,EXPR2,EXPR3)
****************************
IF
EXPR1 IS NOTNULL THE NVL2 RETURNS EXPR2,IF EXPR1 IS NULL THE NVL2 RETURNS
EXPR3.THE ARGUMENT EXPR1 CAN HAVE ANY DATA TYPE
SELECT ENAME,SAL,COMM,NVL2(COMM,'SAL+COMM','SAL')FROM
EMP;
ENAME SAL COMM NVL2(COMM,'SAL+COMM','SAL')
SMITH 800 SAL
ALLEN 1600 300 SAL+COMM
WARD 1250 500 SAL+COMM
JONES 2975 SAL
MARTIN 1250 1400 SAL+COMM
BLAKE 2850 SAL
CLARK 2450 SAL
SCOTT 3000 SAL
KING 5000 SAL
TURNER 1500 0 SAL+COMM
ADAMS 1100 SAL
JAMES 950 SAL
FORD 3000 SAL
MILLER 1300 SAL
SELECT
ENAME,SAL,COMM,NVL2(COMM,'SAL+COMM','SAL')FROM EMP WHERE DEPTNO=10;
ENAME SAL COMM NVL2(COMM,'SAL+COMM','SAL')
CLARK 2450 SAL
KING 5000 SAL
MILLER 1300 SAL
SELECT ENAME,SAL,COMM,NVL2(COMM,'SAL+COMM','SAL')FROM
EMP WHERE DEPTNO=20;
ENAME SAL COMM NVL2(COMM,'SAL+COMM','SAL')
SMITH 800 SAL
JONES 2975 SAL
SCOTT 3000 SAL
ADAMS 1100 SAL
FORD 3000 SAL
SELECT
ENAME,SAL,COMM,NVL2(COMM,'SAL+COMM','SAL')FROM EMP WHERE DEPTNO=30;
ENAME SAL COMM NVL2(COMM,'SAL+COMM','SAL')
ALLEN 1600 300 SAL+COMM
WARD 1250 500 SAL+COMM
MARTIN 1250 1400 SAL+COMM
BLAKE 2850 SAL
TURNER 1500 0 SAL+COMM
JAMES 950 SAL
NULLIF(EXPR1,EXPR2):
*******************
THE
NULLIF FUN COMPARE TWO EXPRS.IF THEY ARE EQUAL,THE FUN RETURNS NULL.IF THEY ARE
NOT EQUAL THE FUN RETURNS THE FIRST EXPR
SELECT ENAME,LENGTH(ENAME)
"EXPR1",ENAME,LENGTH(ENAME)
"EXPR2",NULLIF(LENGTH(ENAME),LENGTH(ENAME)) RESULT FROM EMP;
ENAME EXPR1 ENAME_1 EXPR2 RESULT
SMITH 5 SMITH 5
ALLEN 5 ALLEN 5
WARD 4 WARD 4
JONES 5 JONES 5
MARTIN 6 MARTIN 6
BLAKE 5 BLAKE 5
CLARK 5 CLARK 5
SCOTT 5 SCOTT 5
KING 4 KING 4
TURNER 6 TURNER 6
ADAMS 5 ADAMS 5
JAMES 5 JAMES 5
FORD 4 FORD 4
MILLER 6 MILLER 6
SELECT ENAME,LENGTH(ENAME)
"EXPR1",JOB,LENGTH(JOB)
"EXPR2",NULLIF(LENGTH(ENAME),LENGTH(JOB)) RESULT FROM EMP;
ENAME EXPR1 JOB EXPR2 RESULT
SMITH 5 CLERK 5
ALLEN 5 SALESMAN 8 5
WARD 4 SALESMAN 8 4
JONES 5 MANAGER 7 5
MARTIN 6 SALESMAN 8 6
BLAKE 5 MANAGER 7 5
CLARK 5 MANAGER 7 5
SCOTT 5 ANALYST 7 5
KING 4 PRESIDENT 9 4
TURNER 6 SALESMAN 8 6
ADAMS 5 CLERK 5
JAMES 5 CLERK 5
FORD 4 ANALYST 7 4
MILLER 6 CLERK 5 6
SELECT ENAME,LENGTH(ENAME)
"EXPR1",JOB,LENGTH(JOB)
"EXPR2",NULLIF(LENGTH(ENAME),LENGTH(JOB)) RESULT FROM EMP WHERE
DEPTNO=10;
ENAME EXPR1 JOB EXPR2 RESULT
CLARK 5 MANAGER 7 5
KING 4 PRESIDENT 9 4
MILLER 6 CLERK 5 6
SELECT ENAME,LENGTH(ENAME)
"EXPR1",JOB,LENGTH(JOB)
"EXPR2",NULLIF(LENGTH(ENAME),LENGTH(JOB)) RESULT FROM EMP WHERE
DEPTNO=20;
ENAME EXPR1 JOB EXPR2 RESULT
SMITH 5 CLERK 5
JONES 5 MANAGER 7 5
SCOTT 5 ANALYST 7 5
ADAMS 5 CLERK 5
FORD 4 ANALYST 7 4
SELECT ENAME,LENGTH(ENAME)
"EXPR1",JOB,LENGTH(JOB)
"EXPR2",NULLIF(LENGTH(ENAME),LENGTH(JOB)) RESULT FROM EMP WHERE
DEPTNO=30;
ENAME EXPR1 JOB EXPR2 RESULT
ALLEN 5 SALESMAN 8 5
WARD 4 SALESMAN 8 4
MARTIN 6 SALESMAN 8 6
BLAKE 5 MANAGER 7 5
TURNER 6 SALESMAN 8 6
JAMES 5 CLERK 5
COALESCE(EXPR1,EXPR2,.....EXPRN):
********************************
IF
THE FIRST EXPR IS NOT NULL,IT RETURNS THAT EXPRESSION;OTERWISE, DOES A COALESCE
OF THE REMAINING EXPRESSIONS.
THE
ADVANTAGE OF THE COALESCE FUN OVER THE NVL FUN IS THAT THE COALESCE FUN CAN
TAKE MULTIPLE ALTERNATIVE VALUES.
SELECT ENAME,COALESCE(COMM,SAL,10)FROM EMP;
ENAME COALESCE(COMM,SAL,10)
SMITH 800
ALLEN 300
WARD 500
JONES 2975
MARTIN 1400
BLAKE 2850
CLARK 2450
SCOTT 3000
KING 5000
TURNER 0
ADAMS 1100
JAMES 950
FORD 3000
MILLER 1300
SELECT ENAME,COALESCE(COMM,SAL,10)FROM EMP
ORDER BY COMM;
ENAME COALESCE(COMM,SAL,10)
TURNER 0
ALLEN 300
WARD 500
MARTIN 1400
SCOTT 3000
KING 5000
ADAMS 1100
JAMES 950
FORD 3000
MILLER 1300
BLAKE 2850
JONES 2975
SMITH 800
CLARK 2450
SELECT ENAME,COALESCE(COMM,SAL,10)FROM EMP
WHERE DEPTNO=10 ORDER BY SAL;
ENAME COALESCE(COMM,SAL,10)
MILLER 1300
CLARK 2450
KING 5000
SELECT ENAME,COALESCE(COMM,SAL,10)FROM EMP
WHERE DEPTNO=20;
ENAME COALESCE(COMM,SAL,10)
SMITH 800
JONES 2975
SCOTT 3000
ADAMS 1100
FORD 3000
SELECT ENAME,COALESCE(COMM,SAL,10)FROM EMP
WHERE DEPTNO=30 ORDER BY (COMM);
ENAME COALESCE(COMM,SAL,10)
TURNER 0
ALLEN 300
WARD 500
MARTIN 1400
JAMES 950
BLAKE 2850
CONDITIONAL EXPRESSIONS:
************************
USE TWO METHODS
CASE
EXPRESSION
DECODE
FUN
TWO METHODS USED TO IMPLEMENTE
THE CONDITIONAL PROCESSING(IF-THEN-ELSE LOGIC) WITH IN A SQL STATEMENTARE
THE CASE EXPRESSION AND THE
DECODE FUN.
CASE EXPRESSION:
****************
SELECT ENAME,SAL,EMPNO, CASE ENAME WHEN 'SMITH'
THEN JOB
WHEN 'BLAK'
THEN JOB
WHEN 'FORD'
THEN JOB
ELSE JOB
END
"RESERVED SAL" FROM EMP;
ENAME SAL EMPNO RESERVED
SAL
SMITH 800 7369 CLERK
ALLEN 1600 7499 SALESMAN
WARD 1250 7521 SALESMAN
JONES 2975 7566 MANAGER
MARTIN 1250 7654 SALESMAN
BLAKE 2850 7698 MANAGER
CLARK 2450 7782 MANAGER
SCOTT 3000 7788 ANALYST
KING 5000 7839 PRESIDENT
TURNER 1500 7844 SALESMAN
ADAMS 1100 7876 CLERK
JAMES 950 7900 CLERK
FORD 3000 7902 ANALYST
MILLER 1300 7934 CLERK
SELECT ENAME,SAL,EMPNO, DECODE (ENAME, 'SMITH',
JOB,
'BLAK' ,
JOB,
'FORD', JOB)
JOB
FROM EMP;
ENAME SAL EMPNO JOB
SMITH 800 7369 CLERK
ALLEN 1600 7499
WARD 1250 7521
JONES 2975 7566
MARTIN 1250 7654
BLAKE 2850 7698
CLARK 2450 7782
SCOTT 3000 7788
KING 5000 7839
TURNER 1500 7844
ADAMS 1100 7876
JAMES 950 7900
FORD 3000 7902 ANALYST
MILLER 1300 7934
SELECT ENAME,SAL,DECODE(TRUNC(SAL/2000,0),
0,0.00,
1,0.9,
2,0.20,
3,0.30,
4,0.40,
5,0.42,
6,0.44,
0,46)TAX_RATE
FROM EMP WHERE DEPTNO=20;
ENAME SAL TAX_RATE
SMITH 800 0
JONES 2975 0.9
SCOTT 3000 0.9
ADAMS 1100 0
FORD 3000 0.9
AGGREGATING OR GROUP FUNCTIONS:
*******************************
SYN:GROUP_FUNCTION(DISTINCT/ALL
COLUMN)
1.AVERAGE
2.SUM
3.MINIMUM
4.MAX
5.COUNT
6.STANDARD
DEVIATION
AVERAGE FUN:
**************
SYN:AVG(DISTINCT/ALL
COLUMN)
SELECT AVG(SAL),AVG(DISTINCT SAL) FROM EMP;
2073.21428571429 2064.583333333
SELECT AVG(COMM) FROM EMP;
550
SELECT AVG(DISTINCT COMM)FROM EMP;
550
SUM FUN:
*********
SYN:SUM(DISTINCT/ALL
COLUMN)
SELECT SUM(SAL) FROM EMP;
29025
SELECT SUM(DISTINCT SAL) FROM EMP;
24775
SELECT SUM(COMM) FROM EMP;
2200
SELECT SUM(DISTINCT COMM) FROM EMP;
2200
MAXIMUM FUN:
************
SYN:MAX(DISTINCT/ALL
COLUMN)
SELECT MAX(SAL) FROM EMP;
5000
SELECT MAX(DISTINCT SAL) FROM EMP;
5000
SELECT MAX(ENAME) FROM EMP;
WARD
SELECT ENAME, ASCII(ENAME) FROM EMP;
ENAME ASCII(ENAME)
SMITH 83
ALLEN 65
WARD 87
JONES 74
MARTIN 77
BLAKE 66
CLARK 67
SCOTT 83
KING 75
TURNER 84
ADAMS 65
JAMES 74
FORD 70
MILLER 77
MINIMUM FUN:
************
SYN:MIN(DISTINCT/ALL
COLUMN)
SELECT MIN(SAL) FROM EMP;
800
SELECT MIN(DISTINCT SAL) FROM EMP;
800
SELECT MIN(COMM),MIN(DISTINCT SAL) FROM EMP;
0 800
SELECT MIN(ENAME) FROM EMP;
ADAMS
SELECT MIN(HIREDATE),MAX(HIREDATE) FROM EMP;
12/17/1980 1/12/1983
STANDARD DEVIATION FUN:
*************************
SYN:STDDEV(DISTINCT/ALL
COLUMN)
SELECT STDDEV(SAL) FROM EMP;
1182.50322351627
SELECT STDDEV(DISTINCT SAL) FROM EMP;
1229.95095677047
SELECT STDDEV (COMM)FROM EMP;
602.771377334171
SELECT STDDEV(DISTINCT COMM) FROM EMP;
602.771377334171
VARIANCE FUN:
*************
SYN:VARIANCE(DISTINCT/ALL
COLUMN)
SELECT VARIANCE(SAL) FROM EMP;
1398313.87362637
SELECT VARIANCE(DISTINCT SAL) FROM EMP;
1512779.35606061
SELECT VARIANCE(COMM),VARIANCE(DISTINCT
COMM)FROM EMP;
363333.333333333 363333.3333333333
COUNT FUN:
**********
SYN:COUNT(*/DISTINCT/ALL
COLUMN)
SELECT COUNT(EMPNO) FROM EMP;
14
SELECT COUNT(SAL),COUNT(DISTINCT SAL) FROM EMP;
14 12
SELECT COUNT(JOB),COUNT(DISTINCT JOB) FROM EMP;
14 5
SELECT
COUNT(*) FROM EMP;
14
SELECT COUNT(EMPNO),COUNT(DISTINCT MGR) FROM
EMP;
14 6
SELECT COUNT(JOB),COUNT(DISTINCT MGR) FROM EMP
WHERE DEPTNO=20;
5 4
GROUP BY CLAUSE:
*****************
SELECT JOB FROM EMP GROUP BY JOB;
JOB
CLERK
SALESMAN
PRESIDENT
MANAGER
ANALYST
SELECT DEPTNO FROM EMP GROUP BY DEPTNO;
DEPTNO
30
20
10
SELECT MGR FROM EMP GROUP BY MGR;
MGR
7839
7782
7698
7902
7566
7788
SELECT TO_CHAR(HIREDATE,'YYYY')YEARGROUP FROM
EMP GROUP BY TO_CHAR(HIREDATE,'YYYY');
YEARGROUP
1980
1983
1982
1981
SELECT TO_CHAR(HIREDATE,'MONTH') MONTHGROUP
FROM EMP GROUP BY TO_CHAR(HIREDATE,'MONTH');
MONTHGROUP
FEBRUARY
JANUARY
APRIL
JUNE
NOVEMBER
DECEMBER
SEPTEMBER
MAY
SELECT TO_CHAR(HIREDATE,'DD')DAYGROUP FROM EMP
GROUP BY TO_CHAR(HIREDATE,'DD');
DAYGROUP
09
08
17
28
01
12
20
22
02
03
23
SELECT TO_CHAR(HIREDATE,'MONTH')MONTHGROUP FROM
EMP WHERE TO_CHAR(HIREDATE,'MON')<>'DEC' GROUP BY
TO_CHAR(HIREDATE,'MONTH');
MONTHGROUP
FEBRUARY
JANUARY
APRIL
JUNE
NOVEMBER
SEPTEMBER
MAY
SELECT DEPTNO,COUNT(*) FROM EMP GROUP BY
DEPTNO;
DEPTNO COUNT(*)
30 6
20 5
10 3
SELECT DEPTNO,AVG(SAL) FROM EMP GROUP BY DEPTNO
ORDER BY AVG(SAL);
DEPTNO AVG(SAL)
30 1566.66666666667
20 2175
10 2916.66666666667
SELECT DEPTNO,MIN(SAL),MAX(SAL) FROM EMP GROUP
BY DEPTNO;
DEPTNO MIN(SAL) MAX(SAL)
30 950 2850
20 800 3000
10 1300 5000
SELECT MAX(SAL) FROM EMP GROUP BY DEPTNO;
MAX(SAL)
2850
3000
5000
No comments:
Post a Comment