You are on page 1of 39

SQL> CL SCR

SQL> SELECT ENAME, JOB , COMM FROM EMP;


ENAME

JOB

COMM

---------- --------- ---------SMITH

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

---------- --------- ---------- ---------SMITH

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

---------- --------- ---------- ---------- ---------SMITH

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

---------- --------- ---------- ---------- -----------SMITH

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

---------- --------- ---------- ---------- -----------SMITH

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

NVL2(COMM , SAL + COMM , SAL) "TOTAL"


COMM

TOTAL

---------- --------- ---------- ---------- ---------SMITH

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

---------- --------- ---------- ---------- ---------SMITH

CLERK

ALLEN

SALESMAN

1600

300 SAL + COMM

WARD

SALESMAN

1250

500 SAL + COMM

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

---------- ---------- --------- ---------- ---------SMITH

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

---------- ---------- ---------- ---------- ---------SMITH

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

---------- --------- ---------- --------- ---------- ---------- ----SMITH

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

---------- ---------- ---------- ---------- ---------SMITH

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

---------- ---------- ---------- ---------- ---------SMITH

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

---------- --------- ---------- ---------SMITH

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

---------- --------- ---------- ---------SCOTT

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

---------- --------- ---------- ---------SCOTT

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

SAL INCREMENT TOTAL_SALARY TOTAL_SALARY

---------- --------- ---------- ---------- ------------ -----------SCOTT

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

---------- --------- ---------- --------SMITH

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

---------- --------- ---------- ---------SMITH

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

---------- --------- ---------- ---------- ---------SMITH

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

---------- --------- ---------- ---------- ---------SMITH

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

---------- --------- ---------- ---------- ---------SMITH

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 , SAL/1000 , TRUNC(SAL/1000,0) "TRUC" FROM EMP;


SAL

SAL/1000

TRUC

---------- --------- ---------- ---------- ---------SMITH

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

---------- --------- ---------- ---------- ---------- ---------SMITH

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

---------- --------- ---------- ---------- ---------- ---------SMITH

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

---------- --------- ---------- --------- ---------- ---------- ----SMITH

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

---------- --------- ---------- --------- ---------- ---------- ----SMITH

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

---------- ---------- ---------- ---------- ---------29025


SQL>
SQL>
1
2
3
4
5
6
7*
SQL>

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

---------- ---------- ---------- ---------- ---------29025

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

---------- --------- ---------- --------- ---------- ---------- ----SMITH

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

---------- --------- ---------- --------- ---------- ---------- ----SMITH

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

---------- --------- ---------- --------- ---------- ---------- ----SMITH

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

---------- --------- ------------ --------------10 CLERK

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

---------- --------- ------------ --------------10 CLERK

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

SQL> SELECT * FROM EMP;


EMPNO ENAME
JOB
MGR HIREDATE
SAL
COMM
D
EPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- --------7369 SMITH
CLERK
7902 17-DEC-80
800
20

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

---------- --------- ---------- --------- ---------- ---------- ----CLARK

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

---------- --------- ---------- --------- ---------- ---------- ----CLARK

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

SQL> SELECT TO_CHAR(HIREDATE,'RRRR') "YEAR", COUNT(*) "NO_OF_EMP" , SUM(SAL) "TO


TAL_SAL"
2 FROM EMP
3 GROUP BY TO_CHAR(HIREDATE,'RRRR')
4 ORDER BY 1;
YEAR NO_OF_EMP TOTAL_SAL
---- ---------- ---------1980

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

---- --------- ---------- ---------1980 CLERK

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>

SELECT JOB , COUNT(*)


FROM EMP
HAVING COUNT(*) >=3
GROUP BY JOB
ORDER BY 1
/

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

You might also like