Tuesday, 7 August 2012

Oracle FUNCTIONS with examples 5


SELECT DEPTNO,SUM(SAL)FROM EMP GROUP BY DEPTNO;
DEPTNO               SUM(SAL)
30           9400
20           10875
10           8750
SELECT DEPTNO,JOB,SUM(SAL) FROM EMP GROUP BY DEPTNO,JOB;
DEPTNO               JOB        SUM(SAL)
20           CLERK    1900
30           SALESMAN         5600
20           MANAGER          2975
30           CLERK    950
10           PRESIDENT          5000
30           MANAGER          2850
10           CLERK    1300
10           MANAGER          2450
20           ANALYST              6000
SELECT JOB,MIN(SAL),MAX(SAL) FROM EMP WHERE DEPTNO=30 GROUP BY JOB;
JOB        MIN(SAL)            MAX(SAL)
SALESMAN         1250       1600
CLERK    950         950
MANAGER          2850       2850
SELECT DEPTNO,SUM(SAL),MAX(SAL) FROM EMP WHERE JOB='CLERK' GROUP BY DEPTNO;
DEPTNO               SUM(SAL)           MAX(SAL)
30           950             950
20           1900       1100
10           1300       1300
HAVING CLAUSE:
***************
SELECT * FROM EMP HAVING 1=1;
EMPNO                ENAME JOB        MGR      HIREDATE            SAL         COMM DEPTNO
7369       SMITH   CLERK    7902       12/17/1980         800                         20
7499       ALLEN   SALESMAN         7698       2/20/1981            1600       300         30
7521       WARD   SALESMAN         7698       2/22/1981            1250       500         30
7566       JONES   MANAGER          7839       4/2/1981              2975                       20
7654       MARTIN               SALESMAN         7698       9/28/1981            1250       1400       30
7698       BLAKE   MANAGER          7839       5/1/1981              2850                       30
7782       CLARK   MANAGER          7839       6/9/1981              2450                       10
7788       SCOTT   ANALYST              7566       12/9/1982            3000                       20
7839       KING     PRESIDENT                          11/17/1981         5000                       10
7844       TURNER               SALESMAN         7698       9/8/1981              1500       0              30
7876       ADAMS                CLERK    7788       1/12/1983            1100                       20
7900       JAMES  CLERK    7698       12/3/1981            950                         30
7902       FORD     ANALYST              7566       12/3/1981            3000                       20
7934       MILLER CLERK    7782       1/23/1982            1300                       10
SELECT DEPTNO,COUNT(DEPTNO)FROM EMP GROUP BY DEPTNO HAVING COUNT(DEPTNO)>3;
DEPTNO               COUNT(DEPTNO)
30           6
20           5
SELECT DEPTNO,COUNT(DEPTNO) FROM EMP  HAVING COUNT(DEPTNO)>3 GROUP BY DEPTNO;
DEPTNO               COUNT(DEPTNO)
30           6
20           5
SELECT DEPTNO,AVG(SAL) FROM EMP GROUP BY DEPTNO HAVING AVG(SAL)>2500;
10  2916.666666666667
SELECT JOB,SUM(SAL) PAYROLL FROM EMP WHERE JOB<>'SALESMAN' GROUP BY JOB HAVING SUM(SAL)>=5000 ORDER BY SUM(SAL) DESC;
JOB        PAYROLL
MANAGER          8275
ANALYST              6000
PRESIDENT          5000
SELECT DEPTNO,MIN(SAL),MAX(SAL),SUM(SAL) FROM EMP WHERE JOB='CLERK' GROUP BY DEPTNO HAVING MIN(SAL)<1000;
DEPTNO               MIN(SAL)            MAX(SAL)           SUM(SAL)
30           950         950         950
20           800         1100       1900
SELECT DEPTNO,AVG(SAL),SUM(SAL),MAX(SAL),MIN(SAL)FROM EMP GROUP BY DEPTNO HAVING COUNT(DEPTNO)>3;
DEPTNO               AVG(SAL)            SUM(SAL)           MAX(SAL)           MIN(SAL)
30           1566.66666666667            9400       2850       950
20           2175       10875    3000       800
SELECT DEPTNO,AVG(SAL),SUM(SAL)FROM EMP GROUP BY DEPTNO HAVING AVG(SAL)>2500;
10 2916.6666666667      8750
SELECT DEPTNO, JOB, AVG(SAL),SUM(SAL)FROM EMP GROUP BY DEPTNO,JOB HAVING AVG(SAL)>2500;
DEPTNO               JOB        AVG(SAL)            SUM(SAL)
20           MANAGER          2975       2975
10           PRESIDENT          5000       5000
30           MANAGER          2850       2850
20           ANALYST              3000       6000
 NESTING OF GROUP FUNCTION:
**************************
SELECT MAX(AVG(SAL))FROM EMP GROUP BY DEPTNO;
2916.66666666667
SELECT MAX(SUM(SAL)) FROM EMP GROUP BY DEPTNO;
10875
SELECT MAX(SUM(SAL)),MIN(AVG(SAL))FROM EMP GROUP BY DEPTNO;
10875     1566.666666666667
MISCELLANEOUS FUNCTION:
***********************
SYN:GREATEST(EXPR1,EXPR2,....)
SELECT GREATEST('SIEBEL','CODD','SCOTT')FROM DUAL;
SIEBEL
SELECT GREATEST(1000,2000,3000,4000)FROM DUAL;
4000
SELECT GREATEST('10-JUL-05','20-JUL-05')FROM DUAL;
20-JUL-05
SELECT GREATEST('10-JUL-04','20-JUL-05')FROM DUAL;
20-JUL-05
SELECT GREATEST('K','U','M','A','R') FROM DUAL;
U
LEAST FUNCTION:
****************
SYN:LEAST(EXPR1,EXPR2,.......)
SELECT GREATEST('K','U','M','A','R') FROM DUAL;
A
SELECT LEAST(100,200,300) FROM DUAL;
100
SELECT LEAST(100,-100)FROM DUAL;
-100
SELECT LEAST(1.5,0)FROM DUAL;
1.5
SELECT LEAST(1.5,0)FROM DUAL;
0
SELECT LEAST('01-JAN-12','18-JAN-12')FROM DUAL;
01-JAN-12
USER FUNCTION:
**************
SYN:USER
SELECT USER FROM DUAL;
SYSTEM
UID FUN:
*********
SYN:UID
SELECT USER,UID FROM DUAL;
SYSTEM   5
USERENV FUN:
************
SYN:USERENV(OPTION)
SELECT USERENV('ISDBA') FROM DUAL;
FALSE
SELECT USERENV('LANGUAGE') FROM DUAL;
AMERICAN_AMERICA.WE8MSWIN1252
SELECT USERENV('TERMINAL') FROM DUAL;
KUMAR-PC
SELECT USERENV('SESSIONID') FROM DUAL;
1564
SELECT USERENV('LANG') FROM DUAL;
US
SELECT USERENV('INSTANCE') FROM DUAL;
1
VSIZE FUNCTION:
**************
SYN:VSIZE
SELECT ENAME,VSIZE(ENAME)FROM EMP;
ENAME VSIZE(ENAME)
SMITH   5
ALLEN   5
WARD   4
JONES   5
MARTIN               6
BLAKE   5
CLARK   5
SCOTT   5
KING     4
TURNER               6
ADAMS                5
JAMES  5
FORD     4
MILLER 6
SELECT DEPTNO,VSIZE(DEPTNO)FROM DEPT;
DEPTNO               VSIZE(DEPTNO)
10           2
20           2
30           2
40           2
50           2
SELECT ENAME,HIREDATE,VSIZE(HIREDATE)FROM EMP;
ENAME HIREDATE            VSIZE(HIREDATE)
SMITH   12/17/1980         7
ALLEN   2/20/1981            7
WARD   2/22/1981            7
JONES   4/2/1981              7
MARTIN               9/28/1981            7
BLAKE   5/1/1981              7
CLARK   6/9/1981              7
SCOTT   12/9/1982            7
KING     11/17/1981         7
TURNER               9/8/1981              7
ADAMS                1/12/1983            7
JAMES  12/3/1981            7
FORD     12/3/1981            7
MILLER 1/23/1982            7
SELECT VSIZE('KUMAR')FROM DUAL;
5
SOUNDEX FUNCTION:
****************
SYN:SOUNDX(CHAR)
SELECT ENAME FROM EMP WHERE SOUNDEX(ENAME)=SOUNDEX('SMYTHE');
SMITH

SELECT ENAME,JOB FROM EMP WHERE SOUNDEX(JOB)=SOUNDEX('MANGER');
ENAME JOB
JONES   MANAGER
BLAKE   MANAGER
CLARK   MANAGER
SELECT JOB FROM EMP WHERE SOUNDEX(JOB)=SOUNDEX('CLRK');
JOB
CLERK
CLERK
CLERK
CLERK

No comments:

Post a Comment