Professional Documents
Culture Documents
JOB
COMM
CLERK
ALLEN
SALESMAN
300
WARD
SALESMAN
500
JONES
MANAGER
MARTIN
SALESMAN
BLAKE
MANAGER
CLARK
MANAGER
SCOTT
ANALYST
KING
PRESIDENT
TURNER
SALESMAN
ADAMS
CLERK
JAMES
CLERK
FORD
ANALYST
MILLER
CLERK
1400
14 rows selected.
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
-------NVL
CL SCR
--------- NVL
SELECT ENAME, JOB , COMM , NVL ( COMM , 0 ) "NVL" FROM EMP;
ENAME
JOB
COMM
NVL
CLERK
ALLEN
SALESMAN
300
300
WARD
SALESMAN
500
500
JONES
MANAGER
MARTIN
SALESMAN
BLAKE
MANAGER
0
1400
1400
0
CLARK
MANAGER
SCOTT
ANALYST
KING
PRESIDENT
TURNER
SALESMAN
ADAMS
CLERK
JAMES
CLERK
FORD
ANALYST
MILLER
CLERK
14 rows selected.
SQL> CLS CR
SP2-0042: unknown command "CLS CR" - rest of line ignored.
SQL> CL SCR
SQL> SELECT ENAME, JOB , SAL , COMM , SAL +COMM FROM EMP;
ENAME
JOB
SAL
COMM
SAL+COMM
CLERK
ALLEN
SALESMAN
1600
300
1900
WARD
SALESMAN
1250
500
1750
JONES
MANAGER
2975
MARTIN
SALESMAN
1250
1400
2650
BLAKE
MANAGER
2850
CLARK
MANAGER
2450
SCOTT
ANALYST
3000
KING
PRESIDENT
5000
TURNER
SALESMAN
1500
1500
ADAMS
CLERK
1100
JAMES
CLERK
950
FORD
ANALYST
3000
MILLER
CLERK
1300
14 rows selected.
800
SQL> ED
Wrote file afiedt.buf
1 SELECT
2
ENAME,
3
JOB ,
4
SAL ,
5
COMM ,
6*
SAL + NVL(COMM,0) "TOTAL_SALARY" FROM EMP
SQL> /
ENAME
JOB
SAL
COMM TOTAL_SALARY
CLERK
800
800
ALLEN
SALESMAN
1600
300
1900
WARD
SALESMAN
1250
500
1750
JONES
MANAGER
2975
MARTIN
SALESMAN
1250
BLAKE
MANAGER
2850
2850
CLARK
MANAGER
2450
2450
SCOTT
ANALYST
3000
3000
KING
PRESIDENT
5000
5000
TURNER
SALESMAN
1500
ADAMS
CLERK
1100
1100
JAMES
CLERK
950
950
FORD
ANALYST
3000
3000
MILLER
CLERK
1300
1300
2975
1400
2650
1500
14 rows selected.
SQL>
SQL>
SQL> ED
Wrote file afiedt.buf
1 SELECT
2
ENAME,
3
JOB ,
4
SAL ,
5
COMM ,
6*
SAL + NVL(COMM, 0) "TOTAL_SALARY" FROM EMP
SQL> /
ENAME
JOB
SAL
COMM TOTAL_SALARY
CLERK
800
800
ALLEN
SALESMAN
1600
300
1900
WARD
SALESMAN
1250
500
1750
JONES
MANAGER
2975
MARTIN
SALESMAN
1250
BLAKE
MANAGER
2850
2850
CLARK
MANAGER
2450
2450
SCOTT
ANALYST
3000
3000
KING
PRESIDENT
5000
5000
TURNER
SALESMAN
1500
ADAMS
CLERK
1100
1100
JAMES
CLERK
950
950
FORD
ANALYST
3000
3000
MILLER
CLERK
1300
1300
2975
1400
14 rows selected.
SQL> CL SCR
SQL> CONN HR/HR
Connected.
USER is "HR"
linesize 100
pagesize 100
SQL> SELECT DISTINCT JOB_ID FROM EMPLOYEES;
JOB_ID
---------AC_ACCOUNT
AC_MGR
AD_ASST
AD_PRES
AD_VP
FI_ACCOUNT
FI_MGR
2650
1500
HR_REP
IT_PROG
MK_MAN
MK_REP
PR_REP
PU_CLERK
PU_MAN
SA_MAN
SA_REP
SH_CLERK
ST_CLERK
ST_MAN
19 rows selected.
SQL> CONN SCOTT/TIGER
Connected.
USER is "SCOTT"
linesize 100
pagesize 100
SQL> CL SCR
SQL> --------NVL2
SQL>
SQL> SELECT ENAME, JOB , SAL , COMM ,
2 FROM EMP;
ENAME
JOB
SAL
TOTAL
CLERK
800
800
ALLEN
SALESMAN
1600
300
1900
WARD
SALESMAN
1250
500
1750
JONES
MANAGER
2975
MARTIN
SALESMAN
1250
BLAKE
MANAGER
2850
2850
CLARK
MANAGER
2450
2450
SCOTT
ANALYST
3000
3000
KING
PRESIDENT
5000
5000
2975
1400
2650
TURNER
SALESMAN
1500
1500
ADAMS
CLERK
1100
1100
JAMES
CLERK
950
950
FORD
ANALYST
3000
3000
MILLER
CLERK
1300
1300
14 rows selected.
SQL> ED
Wrote file afiedt.buf
1 SELECT ENAME, JOB , SAL , COMM ,
2
NVL2(COMM , 'SAL + COMM' , 'SAL') "TOTAL"
3* FROM EMP
SQL> /
ENAME
JOB
SAL
COMM TOTAL
CLERK
ALLEN
SALESMAN
1600
WARD
SALESMAN
1250
JONES
MANAGER
2975
MARTIN
SALESMAN
1250
BLAKE
MANAGER
2850
SAL
CLARK
MANAGER
2450
SAL
SCOTT
ANALYST
3000
SAL
KING
PRESIDENT
5000
SAL
TURNER
SALESMAN
1500
ADAMS
CLERK
1100
SAL
JAMES
CLERK
950
SAL
FORD
ANALYST
3000
SAL
MILLER
CLERK
1300
SAL
14 rows selected.
SQL>
SQL>
SQL>
SQL>
800
SAL
SAL
1400 SAL + COMM
0 SAL + COMM
SQL>
SQL> L
1 SELECT ENAME, JOB , SAL , COMM ,
2
NVL2(COMM , 'SAL + COMM' , 'SAL') "TOTAL"
3* FROM EMP
SQL> CL SCR
SQL> ED
Wrote file afiedt.buf
1 SELECT
2
ENAME,
3
LENGTH(ENAME) "EXPR1",
4
JOB,
5
LENGTH(JOB)
"EXP2",
6 NULLIF(LENGTH(ENAME)
,
7*
FROM EMP
8 /
ENAME
EXPR1 JOB
LENGTH(JOB)) "NULL_IF"
EXP2
NULL_IF
5 CLERK
ALLEN
5 SALESMAN
WARD
4 SALESMAN
JONES
5 MANAGER
MARTIN
6 SALESMAN
BLAKE
5 MANAGER
CLARK
5 MANAGER
SCOTT
5 ANALYST
KING
4 PRESIDENT
TURNER
6 SALESMAN
ADAMS
5 CLERK
JAMES
5 CLERK
FORD
4 ANALYST
MILLER
6 CLERK
14 rows selected.
SQL> CL SCR
SQL> SELECT * FROM EMP;
EMPNO ENAME
JOB
MGR HIREDATE
SAL
COMM
D
EPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ---------
7369 SMITH
CLERK
7902 17-DEC-80
800
7499 ALLEN
SALESMAN
7698 20-FEB-81
1600
300
7521 WARD
SALESMAN
7698 22-FEB-81
1250
500
7566 JONES
MANAGER
7839 02-APR-81
2975
7654 MARTIN
SALESMAN
7698 28-SEP-81
1250
7698 BLAKE
MANAGER
7839 01-MAY-81
2850
7782 CLARK
MANAGER
7839 09-JUN-81
2450
7788 SCOTT
ANALYST
7566 19-APR-87
3000
7839 KING
PRESIDENT
17-NOV-81
5000
7844 TURNER
SALESMAN
7698 08-SEP-81
1500
7876 ADAMS
CLERK
7788 23-MAY-87
1100
7900 JAMES
CLERK
7698 03-DEC-81
950
7902 FORD
ANALYST
7566 03-DEC-81
3000
7934 MILLER
CLERK
7782 23-JAN-82
1300
20
30
30
20
1400
30
30
10
20
10
0
30
20
30
20
10
14 rows selected.
SQL> SELECT ENAME, COMM , MGR, SAL , COALESE(COMM, MGR , SAL , -1) "COALESCE" FR
OM EMP;
SELECT ENAME, COMM , MGR, SAL , COALESE(COMM, MGR , SAL , -1) "COALESCE" FROM EM
P
*
ERROR at line 1:
ORA-00904: "COALESE": invalid identifier
SQL> ED
Wrote file afiedt.buf
1* SELECT ENAME, COMM , MGR, SAL , COALESCE(COMM, MGR , SAL , -1) "COALESCE" F
ROM EMP
SQL> /
ENAME
COMM
MGR
SAL
COALESCE
7902
800
7902
ALLEN
300
7698
1600
300
WARD
500
7698
1250
500
7839
2975
7839
7698
1250
1400
JONES
MARTIN
1400
BLAKE
7839
2850
7839
CLARK
7839
2450
7839
SCOTT
7566
3000
7566
5000
5000
7698
1500
ADAMS
7788
1100
7788
JAMES
7698
950
7698
FORD
7566
3000
7566
MILLER
7782
1300
7782
KING
TURNER
14 rows selected.
SQL> UPDATE EMP SET SAL = NULL WHERE ENAME='MILLER';
1 row updated.
SQL> UPDATE EMP SET MGR =NULL WHERE ENAME='MILLER';
1 row updated.
SQL> CL SCR
SQL> SELECT * FROM EMP;
EMPNO
EPTNO
-------------7369
20
7499
30
7521
30
7566
20
7654
30
7698
30
7782
10
7788
20
7839
10
7844
30
7876
20
7900
ENAME
JOB
MGR HIREDATE
SAL
COMM
CLERK
7902 17-DEC-80
800
ALLEN
SALESMAN
7698 20-FEB-81
1600
300
WARD
SALESMAN
7698 22-FEB-81
1250
500
JONES
MANAGER
7839 02-APR-81
2975
MARTIN
SALESMAN
7698 28-SEP-81
1250
BLAKE
MANAGER
7839 01-MAY-81
2850
CLARK
MANAGER
7839 09-JUN-81
2450
SCOTT
ANALYST
7566 19-APR-87
3000
KING
PRESIDENT
17-NOV-81
5000
TURNER
SALESMAN
7698 08-SEP-81
1500
ADAMS
CLERK
7788 23-MAY-87
1100
JAMES
CLERK
7698 03-DEC-81
950
1400
30
7902 FORD
ANALYST
7934 MILLER
CLERK
7566 03-DEC-81
3000
20
23-JAN-82
10
14 rows selected.
SQL> CL SCR
SQL> SELECT ENAME, COMM , MGR, SAL , COALESCE(COMM, MGR , SAL , -1) "COALESCE" F
ROM EMP;
ENAME
COMM
MGR
SAL
COALESCE
7902
800
7902
ALLEN
300
7698
1600
300
WARD
500
7698
1250
500
7839
2975
7839
7698
1250
1400
BLAKE
7839
2850
7839
CLARK
7839
2450
7839
SCOTT
7566
3000
7566
5000
5000
7698
1500
ADAMS
7788
1100
7788
JAMES
7698
950
7698
FORD
7566
3000
7566
JONES
MARTIN
1400
KING
TURNER
MILLER
-1
14 rows selected.
SQL> ED
Wrote file afiedt.buf
1* SELECT ENAME, COMM , MGR, SAL , COALESCE(COMM, MGR , SAL , -5) "COALESCE" F
ROM EMP
SQL> /
ENAME
COMM
MGR
SAL
COALESCE
7902
800
7902
ALLEN
300
7698
1600
300
WARD
500
7698
1250
500
7839
2975
7839
7698
1250
1400
BLAKE
7839
2850
7839
CLARK
7839
2450
7839
SCOTT
7566
3000
7566
5000
5000
7698
1500
ADAMS
7788
1100
7788
JAMES
7698
950
7698
FORD
7566
3000
7566
JONES
MARTIN
1400
KING
TURNER
MILLER
-5
14 rows selected.
SQL> CL SCR
SQL> --------- CASE
SQL>
SQL>
SQL>
SQL> ED
Wrote file afiedt.buf
1 SELECT
2
ENAME,JOB,SAL,
3 CASE
JOB
4
WHEN
5
WHEN
6
ELSE
7*
FROM EMP
8 /
ELSE
WHEN
'CLERK'
'SALESMAN'
THEN
'ANALYST'
THEN
0
END
THEN
SAL*0.10
SAL*0.20
SAL*0.30
INCREMENT
INCREMENT
*
END
ERROR at line 6:
ORA-00923: FROM keyword not found where expected
SQL> ED
Wrote file afiedt.buf
1 SELECT
2
ENAME,JOB,SAL,
3 CASE
JOB
4
WHEN
5
WHEN
6
ELSE
WHEN
'CLERK'
'SALESMAN'
THEN
'ANALYST'
THEN
0
END
THEN
SAL*0.10
SAL*0.20
SAL*0.30
"INCREMENT"
7*
FROM EMP
8 /
ENAME
JOB
SAL INCREMENT
CLERK
800
80
ALLEN
SALESMAN
1600
320
WARD
SALESMAN
1250
250
JONES
MANAGER
2975
MARTIN
SALESMAN
1250
250
BLAKE
MANAGER
2850
CLARK
MANAGER
2450
SCOTT
ANALYST
3000
900
KING
PRESIDENT
5000
TURNER
SALESMAN
1500
300
ADAMS
CLERK
1100
110
JAMES
CLERK
950
95
FORD
ANALYST
3000
900
MILLER
CLERK
14 rows selected.
SQL> ED
Wrote file afiedt.buf
1 SELECT
2
ENAME,JOB,SAL,
3 CASE
JOB
4
WHEN
5
WHEN
6
ELSE
7
FROM EMP
8*
ORDER BY JOB
9 /
ENAME
JOB
WHEN
'CLERK'
'SALESMAN'
THEN
'ANALYST'
THEN
0
END
SAL INCREMENT
ANALYST
3000
900
FORD
ANALYST
3000
900
MILLER
CLERK
THEN
SAL*0.10
SAL*0.20
SAL*0.30
"INCREMENT"
JAMES
CLERK
950
95
SMITH
CLERK
800
80
ADAMS
CLERK
1100
110
BLAKE
MANAGER
2850
JONES
MANAGER
2975
CLARK
MANAGER
2450
KING
PRESIDENT
5000
TURNER
SALESMAN
1500
300
MARTIN
SALESMAN
1250
250
WARD
SALESMAN
1250
250
ALLEN
SALESMAN
1600
320
14 rows selected.
SQL> ED
Wrote file afiedt.buf
1 SELECT
2
ENAME,JOB,SAL,
3 CASE
JOB
WHEN
'CLERK'
4
WHEN
'SALESMAN'
THEN
5
WHEN
'ANALYST'
THEN
6
ELSE
0
END
7
FROM EMP
8*
ORDER BY JOB
SQL> ROLL
Rollback complete.
SQL> CL SCR
SQL> SELECT
2 ENAME,JOB,SAL,
3 CASE JOB WHEN 'CLERK' THEN SAL*0.10
4
WHEN 'SALESMAN' THEN SAL*0.20
5
WHEN 'ANALYST' THEN SAL*0.30
6
ELSE 0 END "INCREMENT"
7 FROM EMP
8 ORDER BY JOB
9 /
ENAME
JOB
SAL INCREMENT
ANALYST
3000
900
FORD
ANALYST
3000
900
MILLER
CLERK
1300
130
THEN
SAL*0.10
SAL*0.20
SAL*0.30
"INCREMENT"
JAMES
CLERK
950
95
SMITH
CLERK
800
80
ADAMS
CLERK
1100
110
BLAKE
MANAGER
2850
JONES
MANAGER
2975
CLARK
MANAGER
2450
KING
PRESIDENT
5000
TURNER
SALESMAN
1500
300
MARTIN
SALESMAN
1250
250
WARD
SALESMAN
1250
250
ALLEN
SALESMAN
1600
320
14 rows selected.
SQL> ED
Wrote file afiedt.buf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16*
17
SELECT
ENAME,JOB,SAL,
CASE JOB WHEN 'CLERK' THEN SAL*0.10
WHEN 'SALESMAN' THEN SAL*0.20
WHEN 'ANALYST' THEN SAL*0.30
ELSE 0 END "INCREMENT",
CASE JOB WHEN
'CLERK'
THEN SAL*1.10
WHEN 'SALESMAN'
THEN SAL*1.20
WHEN 'ANALYST'
THEN SAL*1.30
ELSE
SAL
END "TOTAL_SALARY",
CASE JOB WHEN
'CLERK'
THEN SAL*0.10+SAL
WHEN 'SALESMAN'
THEN SAL*0.20+SAL
WHEN 'ANALYST'
THEN SAL*0.30+SAL
ELSE
SAL
END "TOTAL_SALARY"
FROM EMP
ORDER BY JOB
/
ENAME
JOB
ANALYST
3000
900
3900
3900
FORD
ANALYST
3000
900
3900
3900
MILLER
CLERK
1300
130
1430
1430
JAMES
CLERK
950
95
1045
1045
SMITH
CLERK
800
80
880
880
ADAMS
CLERK
1100
110
1210
1210
BLAKE
MANAGER
2850
2850
2850
JONES
MANAGER
2975
2975
2975
CLARK
MANAGER
2450
2450
2450
KING
PRESIDENT
5000
5000
5000
TURNER
SALESMAN
1500
300
1800
1800
MARTIN
SALESMAN
1250
250
1500
1500
WARD
SALESMAN
1250
250
1500
1500
ALLEN
SALESMAN
1600
320
1920
1920
14 rows selected.
SQL> L
1 SELECT
2 ENAME,JOB,SAL,
3 CASE JOB WHEN 'CLERK' THEN SAL*0.10
4
WHEN 'SALESMAN' THEN SAL*0.20
5
WHEN 'ANALYST' THEN SAL*0.30
6
ELSE 0 END "INCREMENT",
7 CASE JOB WHEN
'CLERK'
THEN SAL*1.10
8
WHEN 'SALESMAN'
THEN SAL*1.20
9
WHEN 'ANALYST'
THEN SAL*1.30
10
ELSE
SAL
END "TOTAL_SALARY",
11 CASE JOB WHEN
'CLERK'
THEN SAL*0.10+SAL
12
WHEN 'SALESMAN'
THEN SAL*0.20+SAL
13
WHEN 'ANALYST'
THEN SAL*0.30+SAL
14
ELSE
SAL
END "TOTAL_SALARY"
15 FROM EMP
16* ORDER BY JOB
SQL> CL SCR
SQL> ED
Wrote file afiedt.buf
1 SELECT
2
ENAME,JOB,SAL,
3 CASE
WHEN SAL < 1000 THEN
'LOW',
4
WHEN SAL < 2000 THEN
'MEDIUM',
5
WHEN SAL < 3000 THEN
'GOOD',
6
ELSE 'EXCELLENT' END "OUTPUT"
7*
FROM EMP
8 /
CASE
WHEN SAL < 1000 THEN
'LOW',
*
ERROR at line 3:
ORA-00905: missing keyword
SQL> ED
Wrote file afiedt.buf
1 SELECT
2
ENAME,JOB,SAL,
3 CASE
WHEN SAL < 1000 THEN
'LOW'
4
WHEN SAL < 2000 THEN
'MEDIUM'
5
WHEN SAL < 3000 THEN
'GOOD'
6
ELSE 'EXCELLENT' END "OUTPUT"
7*
FROM EMP
SQL> /
ENAME
JOB
SAL OUTPUT
CLERK
800 LOW
ALLEN
SALESMAN
1600 MEDIUM
WARD
SALESMAN
1250 MEDIUM
JONES
MANAGER
2975 GOOD
MARTIN
SALESMAN
1250 MEDIUM
BLAKE
MANAGER
2850 GOOD
CLARK
MANAGER
2450 GOOD
SCOTT
ANALYST
3000 EXCELLENT
KING
PRESIDENT
5000 EXCELLENT
TURNER
SALESMAN
1500 MEDIUM
ADAMS
CLERK
1100 MEDIUM
JAMES
CLERK
FORD
ANALYST
3000 EXCELLENT
MILLER
CLERK
1300 MEDIUM
950 LOW
14 rows selected.
SQL> ED
Wrote file afiedt.buf
1 SELECT
2
ENAME,JOB,SAL,
3 CASE
WHEN SAL < 1000 THEN
'LOW'
4
WHEN SAL < 2000 THEN
'MEDIUM'
5
WHEN SAL < 3000 THEN
'GOOD'
6
ELSE 'EXCELLENT' END "OUTPUT"
7
FROM EMP
8*
ORDER BY SAL
SQL> /
ENAME
JOB
SAL OUTPUT
SMITH
CLERK
800 LOW
JAMES
CLERK
950 LOW
ADAMS
CLERK
1100 MEDIUM
WARD
SALESMAN
1250 MEDIUM
MARTIN
SALESMAN
1250 MEDIUM
MILLER
CLERK
1300 MEDIUM
TURNER
SALESMAN
1500 MEDIUM
ALLEN
SALESMAN
1600 MEDIUM
CLARK
MANAGER
2450 GOOD
BLAKE
MANAGER
2850 GOOD
JONES
MANAGER
2975 GOOD
SCOTT
ANALYST
3000 EXCELLENT
FORD
ANALYST
3000 EXCELLENT
KING
PRESIDENT
5000 EXCELLENT
14 rows selected.
SQL> CL SCR
SQL> ED
Wrote file afiedt.buf
1 SELECT
2
ENAME,JOB, SAL,
3 DECODE(JOB ,
'CLERK'
4
,
'SALESMAN'
5
,
'ANALYST'
6
,
0
)
7*
FROM EMP
8 /
ENAME
JOB
SAL
, SAL*.10
, SAL*.20
, SAL*.30
"INC"
INC
CLERK
800
80
ALLEN
SALESMAN
1600
320
WARD
SALESMAN
1250
250
JONES
MANAGER
2975
MARTIN
SALESMAN
1250
250
BLAKE
MANAGER
2850
CLARK
MANAGER
2450
SCOTT
ANALYST
3000
900
KING
PRESIDENT
5000
TURNER
SALESMAN
1500
300
ADAMS
CLERK
1100
110
JAMES
CLERK
950
95
FORD
ANALYST
3000
900
MILLER
CLERK
1300
130
14 rows selected.
SQL> ED
Wrote file afiedt.buf
1
2
3
4
5
6
7
8
9
10
11*
12
SELECT
ENAME,JOB, SAL,
DECODE(JOB ,
'CLERK'
,
'SALESMAN'
,
'ANALYST'
,
0
)
DECODE(JOB ,
'CLERK'
,
'SALESMAN'
,
'ANALYST'
,
0
)
FROM EMP
/
ENAME
JOB
SAL
, SAL*.10
, SAL*.20
, SAL*.30
"INC",
, SAL*1.10
, SAL*1.20
, SAL*1.30
"TOTAL_SAL"
INC TOTAL_SAL
CLERK
800
80
880
ALLEN
SALESMAN
1600
320
1920
WARD
SALESMAN
1250
250
1500
JONES
MANAGER
2975
MARTIN
SALESMAN
1250
250
1500
BLAKE
MANAGER
2850
CLARK
MANAGER
2450
SCOTT
ANALYST
3000
900
3900
KING
PRESIDENT
5000
TURNER
SALESMAN
1500
300
1800
ADAMS
CLERK
1100
110
1210
JAMES
CLERK
950
95
1045
FORD
ANALYST
3000
900
3900
MILLER
CLERK
1300
130
1430
14 rows selected.
SQL> ED
Wrote file afiedt.buf
1
2
3
4
5
6
7
8
9
10
11*
12
SELECT
ENAME,JOB, SAL,
DECODE(JOB ,
'CLERK'
,
'SALESMAN'
,
'ANALYST'
,
0
)
DECODE(JOB ,
'CLERK'
,
'SALESMAN'
,
'ANALYST'
,
SAL
)
FROM EMP
/
ENAME
JOB
SAL
, SAL*.10
, SAL*.20
, SAL*.30
"INC",
, SAL*1.10
, SAL*1.20
, SAL*1.30
"TOTAL_SAL"
INC TOTAL_SAL
CLERK
800
80
880
ALLEN
SALESMAN
1600
320
1920
WARD
SALESMAN
1250
250
1500
JONES
MANAGER
2975
2975
MARTIN
SALESMAN
1250
250
1500
BLAKE
MANAGER
2850
2850
CLARK
MANAGER
2450
2450
SCOTT
ANALYST
3000
900
3900
KING
PRESIDENT
5000
5000
TURNER
SALESMAN
1500
300
1800
ADAMS
CLERK
1100
110
1210
JAMES
CLERK
950
95
1045
FORD
ANALYST
3000
900
3900
MILLER
CLERK
1300
130
1430
14 rows selected.
SQL> ED
Wrote file afiedt.buf
1
2
3
4
5
6
7
8
9
10
11
12*
SQL>
SELECT
ENAME,JOB, SAL,
DECODE(JOB ,
,
,
,
DECODE(JOB ,
,
,
,
FROM EMP
ORDER BY SAL
/
ENAME
JOB
'CLERK'
'SALESMAN'
'ANALYST'
0
)
'CLERK'
'SALESMAN'
'ANALYST'
SAL
)
, SAL*.10
, SAL*.20
, SAL*.30
"INC",
, SAL*1.10
, SAL*1.20
, SAL*1.30
"TOTAL_SAL"
SAL
INC TOTAL_SAL
CLERK
800
80
880
JAMES
CLERK
950
95
1045
ADAMS
CLERK
1100
110
1210
WARD
SALESMAN
1250
250
1500
MARTIN
SALESMAN
1250
250
1500
MILLER
CLERK
1300
130
1430
TURNER
SALESMAN
1500
300
1800
ALLEN
SALESMAN
1600
320
1920
CLARK
MANAGER
2450
2450
BLAKE
MANAGER
2850
2850
JONES
MANAGER
2975
2975
SCOTT
ANALYST
3000
900
3900
FORD
ANALYST
3000
900
3900
KING
PRESIDENT
5000
5000
14 rows selected.
SQL> L
1 SELECT
2
ENAME,JOB, SAL,
3 DECODE(JOB ,
'CLERK'
4
,
'SALESMAN'
5
,
'ANALYST'
6
,
0
)
, SAL*.10
, SAL*.20
, SAL*.30
"INC",
7 DECODE(JOB ,
8
,
9
,
10
,
11
FROM EMP
12*
ORDER BY SAL
SQL> CL SCR
SQL> SELECT ENAME,JOB ,
ENAME
JOB
'CLERK'
'SALESMAN'
'ANALYST'
SAL
)
, SAL*1.10
, SAL*1.20
, SAL*1.30
"TOTAL_SAL"
SAL/1000
TRUC
CLERK
800
.8
ALLEN
SALESMAN
1600
1.6
WARD
SALESMAN
1250
1.25
JONES
MANAGER
2975
2.975
MARTIN
SALESMAN
1250
1.25
BLAKE
MANAGER
2850
2.85
CLARK
MANAGER
2450
2.45
SCOTT
ANALYST
3000
KING
PRESIDENT
5000
TURNER
SALESMAN
1500
1.5
ADAMS
CLERK
1100
1.1
JAMES
CLERK
950
.95
FORD
ANALYST
3000
MILLER
CLERK
1300
1.3
14 rows selected.
SQL> ED
Wrote file afiedt.buf
1 SELECT
2
ENAME,
3
JOB ,
4
SAL ,
5
SAL/1000 ,
6
TRUNC(SAL/1000) "TRUC"
7 DECODE( TRUNC(SAL/1000)
8
9
10
11
12
FROM EMP
13*
order by sal
,
, 1
, 2
, 3
,
, 0
,
0
,
2
,
5
,
15
25) "TAX_RATE"
14 /
ENAME
JOB
SAL
SAL/1000
TRUC
TAX_RATE
CLERK
800
.8
JAMES
CLERK
950
.95
ADAMS
CLERK
1100
1.1
WARD
SALESMAN
1250
1.25
MARTIN
SALESMAN
1250
1.25
MILLER
CLERK
1300
1.3
TURNER
SALESMAN
1500
1.5
ALLEN
SALESMAN
1600
1.6
CLARK
MANAGER
2450
2.45
BLAKE
MANAGER
2850
2.85
JONES
MANAGER
2975
2.975
SCOTT
ANALYST
3000
15
FORD
ANALYST
3000
15
KING
PRESIDENT
5000
25
14 rows selected.
SQL> ed
Wrote file afiedt.buf
1 SELECT
2
ENAME,
3
JOB ,
4
SAL ,
5
SAL/1000 ,
6
TRUNC(SAL/1000) "TRUC"
7 DECODE( TRUNC(SAL/1000)
8
9
10
11
12
FROM EMP
13*
order by sal
SQL> /
ENAME
JOB
SAL
, 1
, 2
, 3
,
, 0
,
0
,
sal*.02
,
sal*.05
,
sal*.15
sal*.25) "TAX_RATE"
SAL/1000
TRUC
TAX_RATE
CLERK
800
.8
JAMES
CLERK
950
.95
ADAMS
CLERK
1100
1.1
22
WARD
SALESMAN
1250
1.25
25
MARTIN
SALESMAN
1250
1.25
25
MILLER
CLERK
1300
1.3
26
TURNER
SALESMAN
1500
1.5
30
ALLEN
SALESMAN
1600
1.6
32
CLARK
MANAGER
2450
2.45
122.5
BLAKE
MANAGER
2850
2.85
142.5
JONES
MANAGER
2975
2.975
148.75
SCOTT
ANALYST
3000
450
FORD
ANALYST
3000
450
KING
PRESIDENT
5000
1250
14 rows selected.
SQL> ed
Wrote file afiedt.buf
1
2
3
4
5
6
7
8
9
10
11
12
13*
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SELECT
ENAME,
JOB ,
SAL ,
SAL/1000 ,
TRUNC(SAL/1000) "TRUC" ,
DECODE( TRUNC(SAL/1000)
, 1
, 2
, 3
,
, 0
,
0
,
sal*.02
,
sal*.05
,
sal*.15
sal*.25) "TAX_RATE"
FROM EMP
order by sal
cl scr
-------- cH#
----CH#4
select * from emp;
EMPNO
EPTNO
-------------7369
20
7499
ENAME
JOB
MGR HIREDATE
SAL
COMM
CLERK
7902 17-DEC-80
800
ALLEN
SALESMAN
7698 20-FEB-81
1600
300
30
7521 WARD
SALESMAN
7698 22-FEB-81
1250
7566 JONES
MANAGER
7839 02-APR-81
2975
7654 MARTIN
SALESMAN
7698 28-SEP-81
1250
7698 BLAKE
MANAGER
7839 01-MAY-81
2850
7782 CLARK
MANAGER
7839 09-JUN-81
2450
7788 SCOTT
ANALYST
7566 19-APR-87
3000
7839 KING
PRESIDENT
17-NOV-81
5000
7844 TURNER
SALESMAN
7698 08-SEP-81
1500
7876 ADAMS
CLERK
7788 23-MAY-87
1100
7900 JAMES
CLERK
7698 03-DEC-81
950
7902 FORD
ANALYST
7566 03-DEC-81
3000
7934 MILLER
CLERK
7782 23-JAN-82
1300
MGR HIREDATE
SAL
500
30
20
1400
30
30
10
20
10
0
30
20
30
20
10
14 rows selected.
SQL> CL SCR
SQL> SELECT * FROM EMP;
EMPNO
EPTNO
-------------7369
20
7499
30
7521
30
7566
20
7654
30
7698
30
7782
10
7788
20
7839
10
7844
30
7876
20
7900
30
7902
ENAME
JOB
COMM
CLERK
7902 17-DEC-80
800
ALLEN
SALESMAN
7698 20-FEB-81
1600
300
WARD
SALESMAN
7698 22-FEB-81
1250
500
JONES
MANAGER
7839 02-APR-81
2975
MARTIN
SALESMAN
7698 28-SEP-81
1250
BLAKE
MANAGER
7839 01-MAY-81
2850
CLARK
MANAGER
7839 09-JUN-81
2450
SCOTT
ANALYST
7566 19-APR-87
3000
KING
PRESIDENT
17-NOV-81
5000
TURNER
SALESMAN
7698 08-SEP-81
1500
ADAMS
CLERK
7788 23-MAY-87
1100
JAMES
CLERK
7698 03-DEC-81
950
FORD
ANALYST
7566 03-DEC-81
3000
1400
20
7934 MILLER
CLERK
7782 23-JAN-82
1300
10
14 rows selected.
SQL> CL SCR
SQL> SELECT SUM(SAL) FROM EMP;
SUM(SAL)
---------29025
SQL> SELECT
2
SQL>
SQL> ED
Wrote file afiedt.buf
1 SELECT
2
SUM(SAL)
3
MIN(SAL)
4
MAX(SAL)
5
AVG(SAL)
6
COUNT(SAL)
7*
FROM EMP
8 /
SUM_SAL
SUM_SAL,
MIN_SAL ,
MAX_SAL,
AVG_SAL,
COUNT_SAL
MIN_SAL
MAX_SAL
AVG_SAL COUNT_SAL
800
CL SCR
L
SELECT
SUM(SAL)
MIN(SAL)
MAX(SAL)
AVG(SAL)
COUNT(SAL)
FROM EMP
/
SUM_SAL
5000 2073.21429
14
SUM_SAL,
MIN_SAL ,
MAX_SAL,
AVG_SAL,
COUNT_SAL
MIN_SAL
MAX_SAL
AVG_SAL COUNT_SAL
800
SQL> ED
Wrote file afiedt.buf
1 SELECT
5000 2073.21429
14
2
SUM(SAL)
SUM_SAL,
3
MIN(SAL)
MIN_SAL ,
4
MAX(SAL)
MAX_SAL,
5
AVG(SAL)
AVG_SAL,
6
COUNT(SAL)
COUNT_SAL
7*
FROM EMP
SQL> CL SCR
SQL> SELET * FROM EM
SP2-0734: unknown command beginning "SELET * FR..." - rest of line ignored.
SQL>
SQL> SELECT * FROM EMP;
EMPNO
EPTNO
-------------7369
20
7499
30
7521
30
7566
20
7654
30
7698
30
7782
10
7788
20
7839
10
7844
30
7876
20
7900
30
7902
20
7934
10
ENAME
JOB
MGR HIREDATE
SAL
COMM
CLERK
7902 17-DEC-80
800
ALLEN
SALESMAN
7698 20-FEB-81
1600
300
WARD
SALESMAN
7698 22-FEB-81
1250
500
JONES
MANAGER
7839 02-APR-81
2975
MARTIN
SALESMAN
7698 28-SEP-81
1250
BLAKE
MANAGER
7839 01-MAY-81
2850
CLARK
MANAGER
7839 09-JUN-81
2450
SCOTT
ANALYST
7566 19-APR-87
3000
KING
PRESIDENT
17-NOV-81
5000
TURNER
SALESMAN
7698 08-SEP-81
1500
ADAMS
CLERK
7788 23-MAY-87
1100
JAMES
CLERK
7698 03-DEC-81
950
FORD
ANALYST
7566 03-DEC-81
3000
MILLER
CLERK
7782 23-JAN-82
1300
14 rows selected.
SQL> SELECT COUNT(COMM) FROM EMP;
COUNT(COMM)
----------4
SQL> SELECT COUNT(NVL(COMM,0)) FROM EMP;
COUNT(NVL(COMM,0))
1400
-----------------14
SQL> CL SCR
SQL> SELECT COUNT(DISTINCT DEPTNO) FROM EMP;
COUNT(DISTINCTDEPTNO)
--------------------3
SQL> SELECT DISTINCT DEPTNO FROM EMP;
DEPTNO
---------30
20
10
SQL> CL SCR
SQL> SELECT SUM(SAL) FROM EMP;
SUM(SAL)
---------29025
SQL> SELECT SUM(sAL) FROM EMP WHERE DEPTNO=10;
SUM(SAL)
---------8750
SQL> CL SCR
SQL> SELECT COUNT(*) FROM EMP;
COUNT(*)
---------14
SQL> SELECT COUNT(*) FROM DEPT;
COUNT(*)
---------4
SQL> SELECT COUNT(*) FROM TAB;
COUNT(*)
---------4
SQL> SELECT COUNT(*) FROM ALL_OBJECTS;
COUNT(*)
---------40699
SQL> CL SCR
SQL> SELECT * FROM EMP;
EMPNO
EPTNO
-------------7369
20
7499
30
7521
30
7566
20
7654
30
7698
30
7782
10
7788
20
7839
10
7844
30
7876
20
7900
30
7902
20
7934
10
ENAME
JOB
MGR HIREDATE
SAL
COMM
CLERK
7902 17-DEC-80
800
ALLEN
SALESMAN
7698 20-FEB-81
1600
300
WARD
SALESMAN
7698 22-FEB-81
1250
500
JONES
MANAGER
7839 02-APR-81
2975
MARTIN
SALESMAN
7698 28-SEP-81
1250
BLAKE
MANAGER
7839 01-MAY-81
2850
CLARK
MANAGER
7839 09-JUN-81
2450
SCOTT
ANALYST
7566 19-APR-87
3000
KING
PRESIDENT
17-NOV-81
5000
TURNER
SALESMAN
7698 08-SEP-81
1500
ADAMS
CLERK
7788 23-MAY-87
1100
JAMES
CLERK
7698 03-DEC-81
950
FORD
ANALYST
7566 03-DEC-81
3000
MILLER
CLERK
7782 23-JAN-82
1300
1400
14 rows selected.
SQL> SELECT COUNT(*) , COUNT(COMM) FROM EMP;
COUNT(*) COUNT(COMM)
---------- ----------14
SQL> CL SCR
SQL> SELECT AVG(COMM) FROM EMP;
AVG(COMM)
---------550
SQL> SELECT * FROM EMP;
EMPNO
EPTNO
-------------7369
20
7499
30
7521
30
7566
20
7654
30
7698
30
7782
10
7788
20
7839
10
7844
30
7876
20
7900
30
7902
20
7934
10
ENAME
JOB
MGR HIREDATE
SAL
COMM
CLERK
7902 17-DEC-80
800
ALLEN
SALESMAN
7698 20-FEB-81
1600
300
WARD
SALESMAN
7698 22-FEB-81
1250
500
JONES
MANAGER
7839 02-APR-81
2975
MARTIN
SALESMAN
7698 28-SEP-81
1250
BLAKE
MANAGER
7839 01-MAY-81
2850
CLARK
MANAGER
7839 09-JUN-81
2450
SCOTT
ANALYST
7566 19-APR-87
3000
KING
PRESIDENT
17-NOV-81
5000
TURNER
SALESMAN
7698 08-SEP-81
1500
ADAMS
CLERK
7788 23-MAY-87
1100
JAMES
CLERK
7698 03-DEC-81
950
FORD
ANALYST
7566 03-DEC-81
3000
MILLER
CLERK
7782 23-JAN-82
1300
14 rows selected.
SQL> CL SCR
SQL> SELECT AVG(NVL(COMM,0)) FROM EMP;
1400
AVG(NVL(COMM,0))
---------------157.142857
SQL> CL SCR
SQL> SELECT DEPTNO , SUM(SAL) FROM EMP;
SELECT DEPTNO , SUM(SAL) FROM EMP
*
ERROR at line 1:
ORA-00937: not a single-group group function
SQL> ED
Wrote file afiedt.buf
1 SELECT
2
DEPTNO ,
3
SUM(SAL)
4
FROM EMP
5
GROUP BY DEPTNO
6*
ORDER BY 1
7 /
DEPTNO
SUM(SAL)
---------- ---------10
8750
20
10875
30
9400
SQL> ED
Wrote file afiedt.buf
1 SELECT
2
DEPTNO ,
3
SUM(SAL) "TOTAL_SALARY",
4
COUNT(*) "NO_OF_EMPLOYEES"
5
FROM EMP
6
GROUP BY DEPTNO
7*
ORDER BY 1
8 /
DEPTNO TOTAL_SALARY NO_OF_EMPLOYEES
---------- ------------ --------------10
8750
20
10875
30
9400
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL> ED
Wrote file afiedt.buf
1 SELECT
2
DEPTNO , JOB,
3
SUM(SAL) "TOTAL_SALARY",
4
COUNT(*) "NO_OF_EMPLOYEES"
5
FROM EMP
6
GROUP BY DEPTNO
7*
ORDER BY 1
SQL> /
DEPTNO , JOB,
*
ERROR at line 2:
ORA-00979: not a GROUP BY expression
SQL>
SQL>
SQL>
SQL>
SQL>
SQL> ED
Wrote file afiedt.buf
1 SELECT
2
DEPTNO , JOB,
3
SUM(SAL) "TOTAL_SALARY",
4
COUNT(*) "NO_OF_EMPLOYEES"
5
FROM EMP
6
GROUP BY DEPTNO,JOB
7*
ORDER BY 1
SQL> /
DEPTNO JOB
TOTAL_SALARY NO_OF_EMPLOYEES
1300
10 MANAGER
2450
10 PRESIDENT
5000
20 ANALYST
6000
20 CLERK
1900
20 MANAGER
2975
950
30 MANAGER
2850
30 SALESMAN
5600
30 CLERK
9 rows selected.
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL> BREAK ON DEPTNO SKIP 2
SQL> CL SCR
SQL> /
DEPTNO JOB
TOTAL_SALARY NO_OF_EMPLOYEES
1300
MANAGER
2450
PRESIDENT
5000
20 ANALYST
6000
CLERK
1900
MANAGER
2975
950
MANAGER
2850
SALESMAN
5600
30 CLERK
9 rows selected.
SQL> --- BREAK ON DEPTNO SKIP 2
SQL> CL SCR
7499 ALLEN
SALESMAN
7698 20-FEB-81
1600
300
7521 WARD
SALESMAN
7698 22-FEB-81
1250
500
7566 JONES
MANAGER
7839 02-APR-81
2975
7654 MARTIN
SALESMAN
7698 28-SEP-81
1250
7698 BLAKE
MANAGER
7839 01-MAY-81
2850
7782 CLARK
MANAGER
7839 09-JUN-81
2450
7788 SCOTT
ANALYST
7566 19-APR-87
3000
7839 KING
PRESIDENT
17-NOV-81
5000
7844 TURNER
SALESMAN
7698 08-SEP-81
1500
7876 ADAMS
CLERK
7788 23-MAY-87
1100
30
20
1400
30
10
20
10
30
20
7900 JAMES
CLERK
7698 03-DEC-81
950
7902 FORD
ANALYST
7566 03-DEC-81
3000
7934 MILLER
CLERK
7782 23-JAN-82
1300
30
20
10
14 rows selected.
SQL> SELECT * FROM EMP ORDER BY DEPTNO;
EMPNO
EPTNO
-------------7782
10
7839
ENAME
JOB
MGR HIREDATE
SAL
COMM
MANAGER
KING
PRESIDENT
7839 09-JUN-81
2450
17-NOV-81
5000
7934 MILLER
CLERK
7782 23-JAN-82
1300
7566 JONES
MANAGER
7839 02-APR-81
2975
7902 FORD
ANALYST
7566 03-DEC-81
3000
7876 ADAMS
CLERK
7788 23-MAY-87
1100
7369 SMITH
CLERK
7902 17-DEC-80
800
7788 SCOTT
ANALYST
7566 19-APR-87
3000
7521 WARD
SALESMAN
7698 22-FEB-81
1250
500
7844 TURNER
SALESMAN
7698 08-SEP-81
1500
7499 ALLEN
SALESMAN
7698 20-FEB-81
1600
300
20
30
7900 JAMES
CLERK
7698 03-DEC-81
950
7698 BLAKE
MANAGER
7839 01-MAY-81
2850
7654 MARTIN
SALESMAN
7698 28-SEP-81
1250
1400
MGR HIREDATE
SAL
COMM
14 rows selected.
SQL> CLEAR BREAK
breaks cleared
SQL> /
EMPNO
EPTNO
-------------7782
10
7839
10
7934
10
7566
20
7902
20
7876
20
7369
20
7788
20
7521
30
7844
30
7499
30
7900
30
7698
30
7654
30
ENAME
JOB
MANAGER
7839 09-JUN-81
2450
KING
PRESIDENT
17-NOV-81
5000
MILLER
CLERK
7782 23-JAN-82
1300
JONES
MANAGER
7839 02-APR-81
2975
FORD
ANALYST
7566 03-DEC-81
3000
ADAMS
CLERK
7788 23-MAY-87
1100
SMITH
CLERK
7902 17-DEC-80
800
SCOTT
ANALYST
7566 19-APR-87
3000
WARD
SALESMAN
7698 22-FEB-81
1250
500
TURNER
SALESMAN
7698 08-SEP-81
1500
ALLEN
SALESMAN
7698 20-FEB-81
1600
300
JAMES
CLERK
7698 03-DEC-81
950
BLAKE
MANAGER
7839 01-MAY-81
2850
MARTIN
SALESMAN
7698 28-SEP-81
1250
14 rows selected.
SQL> CL SCR
SQL> SELECT DEPTNO , SUM(SAL) FROM EMP GROUP BY DEPTNO ORDER BY 1;
DEPTNO
SUM(SAL)
---------- ----------
1400
10
8750
20
10875
30
9400
800
1981
10
22825
1982
1300
1987
4100
SQL> ED
Wrote file afiedt.buf
1
2
3
4
5
6
7
8*
SQL>
SELECT
TO_CHAR(HIREDATE,'RRRR') "YEAR",
JOB,
COUNT(*) "NO_OF_EMP" ,
SUM(SAL) "TOTAL_SAL"
FROM EMP
GROUP BY TO_CHAR(HIREDATE,'RRRR'),JOB
ORDER BY 1
/
YEAR JOB
NO_OF_EMP TOTAL_SAL
800
1981 ANALYST
3000
1981 CLERK
950
1981 MANAGER
8275
1981 PRESIDENT
5000
1981 SALESMAN
5600
1982 CLERK
1300
1987 ANALYST
3000
1987 CLERK
1100
9 rows selected.
SQL> CL SCR
SQL> SELECT JOB , COUNT(*) FROM EMP
2 GROUP BY JOB ORDER BY 1;
JOB
COUNT(*)
--------- ---------ANALYST
CLERK
MANAGER
PRESIDENT
SALESMAN
SQL> ED
Wrote file afiedt.buf
1 SELECT JOB , COUNT(*)
2 FROM EMP
3 WHERE COUNT(*) >=3
4 GROUP BY JOB
5* ORDER BY 1
6 /
WHERE COUNT(*) >=3
*
ERROR at line 3:
ORA-00934: group function is not allowed here
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL> ED
Wrote file afiedt.buf
1
2
3
4
5*
SQL>
JOB
COUNT(*)
--------- ---------CLERK
MANAGER
SALESMAN
SQL> CL SCR
SQL> SELECT DEPTNO , SUM(SAL ) FROM EMP GROUP BY DEPTNO ORDER BY 1;
DEPTNO
SUM(SAL)
---------- ---------10
8750
20
10875
30
9400
SQL> ED
Wrote file afiedt.buf
1 SELECT
2
DEPTNO ,
3
SUM(SAL )
4
FROM EMP
WHERE DEPTNO IN (10,20,30)
5
HAVING SUM(sAL)>=9000
6
GROUP BY DEPTNO
7*
ORDER BY 1
8 /
DEPTNO
SUM(SAL)
---------- ---------20
10875
30
9400
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL> CL SCR
SQL> SELECT MAX(AVG(SUM(SAL))) FROM EMP;
SELECT MAX(AVG(SUM(SAL))) FROM EMP
*
ERROR at line 1:
ORA-00935: group function is nested too deeply
SQL> ED
Wrote file afiedt.buf
1* SELECT MAX(AVG(SAL)) FROM EMP
2 /
SELECT MAX(AVG(SAL)) FROM EMP
*
ERROR at line 1:
ORA-00978: nested group function without GROUP BY
SQL> ED
Wrote file afiedt.buf
1 SELECT MAX(AVG(SAL)) FROM EMP
2* GROUP BY DEPTNO
SQL> /
MAX(AVG(SAL))
------------2916.66667
SQL> CL SCR
SQL> CL SCR
SQL> SPOOL
currently spooling to C:\B63E\SQL07_20130101.TXT
SQL> SPOOL OFF