Sunteți pe pagina 1din 23

SQL*Plus: Release 10.2.0.3.

0 - Production on Sat May 10 09:45:36 2014


Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
Enter password: *******
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> show user
USER is "SHUBHAM"
SQL> ed
SP2-0107: Nothing to save.
SQL> select to_char(1257.3252,'L99G999G99D99') FROM DUAL;
TO_CHAR(1257.3252,'L99G
----------------------$12,57.33
SQL> ED
Wrote file afiedt.buf
1* select to_char(-1257.3252,'L99G999G99D99') FROM DUAL
SQL> /
TO_CHAR(-1257.3252,'L99
-----------------------$12,57.33
SQL> ED
Wrote file afiedt.buf
1* select to_char(-1257.3252,'L99G999G99D99MI') FROM DUAL
SQL> /
TO_CHAR(-1257.3252,'L99
----------------------$12,57.331* SELECT TO_CHAR(TO_DATE('14-AUG-00'),'DD-MON-YYYY') FROM DUAL
SQL> /
TO_CHAR(TO_
----------14-AUG-2000
SQL> ED
Wrote file afiedt.buf
1* SELECT TO_CHAR(TO_DATE('14-AUG-49'),'DD-MON-YYYY') FROM DUAL
SQL> /
TO_CHAR(TO_
----------14-AUG-2049
SQL> ED

Wrote file afiedt.buf


1* SELECT TO_CHAR(TO_DATE('14-AUG-50'),'DD-MON-YYYY') FROM DUAL
SQL> /
TO_CHAR(TO_
----------14-AUG-1950
SQL> ED
Wrote file afiedt.buf
1* SELECT TO_CHAR(TO_DATE('14-AUG-99'),'DD-MON-YYYY') FROM DUAL
SQL> /
TO_CHAR(TO_
----------14-AUG-1999
SQL> SELECT NVL2(10,20,30) FROM DUAL;
NVL2(10,20,30)
-------------20
SQL> ED
Wrote file afiedt.buf
1* SELECT NVL2(NULL,20,30) FROM DUAL
SQL> /
NVL2(NULL,20,30)
---------------30
SQL> ED
Wrote file afiedt.buf
1* SELECT NULLIF(10,20) FROM DUAL
SQL> /
NULLIF(10,20)
------------10
SQL> ED
Wrote file afiedt.buf
1* SELECT NULLIF(10,10) FROM DUAL
SQL> /
NULLIF(10,10)
------------SQL>
SQL> ed
Wrote file afiedt.buf

1* select coalesce(null,10,20,30,40) from dual


SQL> /
COALESCE(NULL,10,20,30,40)
-------------------------10
SQL> ed
Wrote file afiedt.buf
1* select coalesce(null,10,null,30,40) from dual
SQL> /
COALESCE(NULL,10,NULL,30,40)
---------------------------10
SQL> ed
Wrote file afiedt.buf
1* select coalesce(null,null,null,30,40) from dual
SQL> /
COALESCE(NULL,NULL,NULL,30,40)
-----------------------------30

SQL> set pagesize100


SQL> set linesize100
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 09-DEC-82

3000

KING

PRESIDENT

17-NOV-81

5000

TURNER

SALESMAN

7698 08-SEP-81

1500

ADAMS

CLERK

7788 12-JAN-83

1100

JAMES

CLERK

7698 03-DEC-81

950

1400

30
7902 FORD

ANALYST

7566 03-DEC-81

3000

7934 MILLER

CLERK

7782 23-JAN-82

1300

20
10
14 rows selected.
SQL> select ename, empno,nvl2(comm,'sal+comm','sal')income from emp;
ENAME
EMPNO INCOME
---------- ---------- -------SMITH
7369 sal
ALLEN
7499 sal+comm
WARD
7521 sal+comm
JONES
7566 sal
MARTIN
7654 sal+comm
BLAKE
7698 sal
CLARK
7782 sal
SCOTT
7788 sal
KING
7839 sal
TURNER
7844 sal+comm
ADAMS
7876 sal
JAMES
7900 sal
FORD
7902 sal
MILLER
7934 sal
14 rows selected.
SQL> ed
Wrote file afiedt.buf
1* select ename, empno,nvl2(comm,sal+comm,sal)income from emp
SQL> /
ENAME
EMPNO
INCOME
---------- ---------- ---------SMITH
7369
800
ALLEN
7499
1900
WARD
7521
1750
JONES
7566
2975
MARTIN
7654
2650
BLAKE
7698
2850
CLARK
7782
2450
SCOTT
7788
3000
KING
7839
5000
TURNER
7844
1500
ADAMS
7876
1100
JAMES
7900
950
FORD
7902
3000
MILLER
7934
1300
14 rows selected.
SQL> ed
Wrote file afiedt.buf
1* select ename,sal,comm,empno,nvl2(comm,sal+comm,sal)income from emp
SQL> /

ENAME
SAL
COMM
EMPNO
INCOME
---------- ---------- ---------- ---------- ---------SMITH
800
7369
800
ALLEN
1600
300
7499
1900
WARD
1250
500
7521
1750
JONES
2975
7566
2975
MARTIN
1250
1400
7654
2650
BLAKE
2850
7698
2850
CLARK
2450
7782
2450
SCOTT
3000
7788
3000
KING
5000
7839
5000
TURNER
1500
0
7844
1500
ADAMS
1100
7876
1100
JAMES
950
7900
950
FORD
3000
7902
3000
MILLER
1300
7934
1300
14 rows selected.
SQL> ed
Wrote file afiedt.buf
1* select ename,sal,comm,empno from emp where nullif(length(sal),length(comm))
is null
SQL> /
ENAME
SAL
COMM
EMPNO
---------- ---------- ---------- ---------MARTIN
1250
1400
7654
SQL> select decode (&num,1,'one',2,'two','unknown') from dual;
Enter value for num: 2
old 1: select decode (&num,1,'one',2,'two','unknown') from dual
new 1: select decode (2,1,'one',2,'two','unknown') from dual
DEC
--two
SQL> /
Enter value for num: 3
old 1: select decode (&num,1,'one',2,'two','unknown') from dual
new 1: select decode (3,1,'one',2,'two','unknown') from dual
DECODE(
------unknown
SQL> /
Enter value for num: 1
old 1: select decode (&num,1,'one',2,'two','unknown') from dual
new 1: select decode (1,1,'one',2,'two','unknown') from dual
DEC
--one
1* select ename,job,sal,decode(job,'clerk',0.10*sal,'analyst',0.20*sal,'manage

r',0.30*sal,0.01*sal
SQL> /
ENAME
---------SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
KING
TURNER
ADAMS
JAMES
FORD
MILLER

JOB
SAL
BONUS
--------- ---------- ---------CLERK
800
8
SALESMAN
1600
16
SALESMAN
1250
12.5
MANAGER
2975
29.75
SALESMAN
1250
12.5
MANAGER
2850
28.5
MANAGER
2450
24.5
ANALYST
3000
30
PRESIDENT
5000
50
SALESMAN
1500
15
CLERK
1100
11
CLERK
950
9.5
ANALYST
3000
30
CLERK
1300
13

14 rows selected.
SQL> ed
Wrote file afiedt.buf
1* select ename,job,sal,decode(job,'CLERK',0.10*sal,'ANALYST',0.20*sal,'MANAGE
R',0.30*sal,0.01*sal
SQL> /
ENAME
---------SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
KING
TURNER
ADAMS
JAMES
FORD
MILLER

JOB
SAL
BONUS
--------- ---------- ---------CLERK
800
80
SALESMAN
1600
16
SALESMAN
1250
12.5
MANAGER
2975
892.5
SALESMAN
1250
12.5
MANAGER
2850
855
MANAGER
2450
735
ANALYST
3000
600
PRESIDENT
5000
50
SALESMAN
1500
15
CLERK
1100
110
CLERK
950
95
ANALYST
3000
600
CLERK
1300
130

14 rows selected.
SQL> ed
Wrote file afiedt.buf
1
2
3
4
5*
SQL>
ENAME

select ename,job,sal,case lower(job)


when'clerk'then 0.10*sal
when'analyst'then 0.20*sal
when'manager'then 0.30*sal
else 0.01*sal end as bonus from emp
/
JOB

SAL

BONUS

---------SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
KING
TURNER
ADAMS
JAMES
FORD
MILLER

--------- ---------- ---------CLERK


800
80
SALESMAN
1600
16
SALESMAN
1250
12.5
MANAGER
2975
892.5
SALESMAN
1250
12.5
MANAGER
2850
855
MANAGER
2450
735
ANALYST
3000
600
PRESIDENT
5000
50
SALESMAN
1500
15
CLERK
1100
110
CLERK
950
95
ANALYST
3000
600
CLERK
1300
130

14 rows selected.

SQL> select sum(sal) from emp;


SUM(SAL)
---------29025
SQL> ed
Wrote file afiedt.buf
1* select sum(sal),min(sal),max(sal) from emp
SQL> /
SUM(SAL) MIN(SAL) MAX(SAL)
---------- ---------- ---------29025
800
5000
SQL> ed
Wrote file afiedt.buf
1* select sum(sal),min(sal),max(sal)avg(sal),count(sal) from emp
SQL> /
select sum(sal),min(sal),max(sal)avg(sal),count(sal) from emp
*
ERROR at line 1:
ORA-00923: FROM keyword not found where expected
SQL> ed
Wrote file afiedt.buf
1* select sum(sal),min(sal),max(sal),avg(sal),count(sal) from emp
SQL> /
SUM(SAL) MIN(SAL) MAX(SAL) AVG(SAL) COUNT(SAL)
---------- ---------- ---------- ---------- ---------29025
800
5000 2073.21429
14
SQL> ed
Wrote file afiedt.buf

1* select sum(comm),min(comm),max(comm),avg(comm),count(comm) from emp


SQL> /
SUM(COMM) MIN(COMM) MAX(COMM) AVG(COMM) COUNT(COMM)
---------- ---------- ---------- ---------- ----------2200
0
1400
550
4
SQL> ed
Wrote file afiedt.buf
1* select sum(comm),min(comm),max(comm),avg(comm),count(comm) from emp where d
eptno=10
SQL> /
SUM(COMM) MIN(COMM) MAX(COMM) AVG(COMM) COUNT(COMM)
---------- ---------- ---------- ---------- ----------0
SQL> ed
Wrote file afiedt.buf
1* select sum(comm),min(comm),max(comm),avg(comm),count(comm) from emp where d
eptno=99
SQL> /
SUM(COMM) MIN(COMM) MAX(COMM) AVG(COMM) COUNT(COMM)
---------- ---------- ---------- ---------- ----------0
SQL> ed
Wrote file afiedt.buf
1* select sum(sal),min(sal),max(sal),avg(sal),count(sal) from emp group by dep
tno
SQL> /
SUM(SAL) MIN(SAL) MAX(SAL) AVG(SAL) COUNT(SAL)
---------- ---------- ---------- ---------- ---------9400
950
2850 1566.66667
6
10875
800
3000
2175
5
8750
1300
5000 2916.66667
3
SQL> ed
Wrote file afiedt.buf
1* select deptno,sum(sal),min(sal),max(sal),avg(sal),count(sal) from emp group
by deptno
SQL> /
DEPTNO SUM(SAL) MIN(SAL) MAX(SAL) AVG(SAL) COUNT(SAL)
---------- ---------- ---------- ---------- ---------- ---------30
9400
950
2850 1566.66667
6
20
10875
800
3000
2175
5
10
8750
1300
5000 2916.66667
3
SQL> ed
Wrote file afiedt.buf
1* select deptno,sum(sal),min(sal),max(sal),avg(sal),count(sal) from emp
SQL> /

select deptno,sum(sal),min(sal),max(sal),avg(sal),count(sal) from emp


*
ERROR at line 1:
ORA-00937: not a single-group group function
SQL> ed
Wrote file afiedt.buf
1* select sum(sal),min(sal),max(sal),avg(sal),count(sal) from emp group by dep
tno
SQL> /
SUM(SAL) MIN(SAL) MAX(SAL) AVG(SAL) COUNT(SAL)
---------- ---------- ---------- ---------- ---------9400
950
2850 1566.66667
6
10875
800
3000
2175
5
8750
1300
5000 2916.66667
3
SQL> ed
Wrote file afiedt.buf
1* select deptno,job,sum(sal),min(sal),max(sal),avg(sal),count(sal) from emp g
roup by deptno,job
SQL> /
DEPTNO
---------20
30
20
30
10
30
10
10
20

JOB
SUM(SAL) MIN(SAL) MAX(SAL) AVG(SAL) COUNT(SAL)
--------- ---------- ---------- ---------- ---------- ---------CLERK
1900
800
1100
950
2
SALESMAN
5600
1250
1600
1400
4
MANAGER
2975
2975
2975
2975
1
CLERK
950
950
950
950
1
PRESIDENT
5000
5000
5000
5000
1
MANAGER
2850
2850
2850
2850
1
CLERK
1300
1300
1300
1300
1
MANAGER
2450
2450
2450
2450
1
ANALYST
6000
3000
3000
3000
2

9 rows selected.
SQL> ed
Wrote file afiedt.buf
1* select job,deptno,sum(sal),min(sal),max(sal),avg(sal),count(sal) from emp g
roup by job, deptno
SQL> /
JOB
DEPTNO SUM(SAL) MIN(SAL) MAX(SAL) AVG(SAL) COUNT(SAL)
--------- ---------- ---------- ---------- ---------- ---------- ---------MANAGER
20
2975
2975
2975
2975
1
PRESIDENT
10
5000
5000
5000
5000
1
CLERK
10
1300
1300
1300
1300
1
SALESMAN
30
5600
1250
1600
1400
4
ANALYST
20
6000
3000
3000
3000
2
MANAGER
30
2850
2850
2850
2850
1
MANAGER
10
2450
2450
2450
2450
1
CLERK
30
950
950
950
950
1
CLERK
20
1900
800
1100
950
2
9 rows selected.

SQL> ed
Wrote file afiedt.buf
1* select job,deptno,sum(sal),min(sal),max(sal),avg(sal),count(sal) from emp w
here count(sal)>1 gr
SQL> /
select job,deptno,sum(sal),min(sal),max(sal),avg(sal),count(sal) from emp where
count(sal)>1 group b
*
ERROR at line 1:
ORA-00934: group function is not allowed here
SQL> ed
Wrote file afiedt.buf
1* select job,deptno,sum(sal),min(sal),max(sal),avg(sal),count(sal) from emp h
aving count(sal)>1 g
SQL> /
JOB
DEPTNO SUM(SAL) MIN(SAL) MAX(SAL) AVG(SAL) COUNT(SAL)
--------- ---------- ---------- ---------- ---------- ---------- ---------SALESMAN
30
5600
1250
1600
1400
4
ANALYST
20
6000
3000
3000
3000
2
CLERK
20
1900
800
1100
950
2
SQL> ed
Wrote file afiedt.buf
1* select deptno,sum(sal),count(sal) from emp group by deptno
SQL> /
DEPTNO SUM(SAL) COUNT(SAL)
---------- ---------- ---------30
9400
6
20
10875
5
10
8750
3
SQL> ed
Wrote file afiedt.buf
1* select deptno,sum(sal),count(sal) from emp group by rollup(deptno)
SQL> /
DEPTNO SUM(SAL) COUNT(SAL)
---------- ---------- ---------10
8750
3
20
10875
5
30
9400
6
29025
14
SQL> ed
Wrote file afiedt.buf
1* select deptno,job,sum(sal),count(sal) from emp group by rollup(deptno,job)
SQL> /
DEPTNO JOB

SUM(SAL) COUNT(SAL)

---------10
10
10
10
20
20
20
20
30
30
30
30

--------- ---------- ---------CLERK


1300
1
MANAGER
2450
1
PRESIDENT
5000
1
8750
3
CLERK
1900
2
ANALYST
6000
2
MANAGER
2975
1
10875
5
CLERK
950
1
MANAGER
2850
1
SALESMAN
5600
4
9400
6
29025
14

13 rows selected.
SQL> ed
Wrote file afiedt.buf
1* select deptno,job,sum(sal),count(sal) from emp group by cube(deptno,job)
SQL> /
DEPTNO JOB
SUM(SAL) COUNT(SAL)
---------- --------- ---------- ---------29025
14
CLERK
4150
4
ANALYST
6000
2
MANAGER
8275
3
SALESMAN
5600
4
PRESIDENT
5000
1
10
8750
3
10 CLERK
1300
1
10 MANAGER
2450
1
10 PRESIDENT
5000
1
20
10875
5
20 CLERK
1900
2
20 ANALYST
6000
2
20 MANAGER
2975
1
30
9400
6
30 CLERK
950
1
30 MANAGER
2850
1
30 SALESMAN
5600
4
18 rows selected.

SQL> ed
Wrote file afiedt.buf
1 select deptno,job,sum(sal),count(sal),grouping(deptno)gd, grouping(job)gj
2* from emp group by rollup(deptno,job)
SQL> /
DEPTNO
---------10
10
10

JOB
SUM(SAL) COUNT(SAL)
GD
GJ
--------- ---------- ---------- ---------- ---------CLERK
1300
1
0
0
MANAGER
2450
1
0
0
PRESIDENT
5000
1
0
0

10
20
20
20
20
30
30
30
30

CLERK
ANALYST
MANAGER
CLERK
MANAGER
SALESMAN

8750
1900
6000
2975
10875
950
2850
5600
9400
29025

3
2
2
1
5
1
1
4
6
14

0
0
0
0
0
0
0
0
0
1

1
0
0
0
1
0
0
0
1
1

13 rows selected.
SQL> ed
Wrote file afiedt.buf
1 select deptno,job,sum(sal),count(sal),grouping(deptno)gd, grouping(job)gj
2* from emp having grouping(deptno)=1 or grouping(job)=1 group by rollup(dept
no,job)
SQL> /
DEPTNO JOB
SUM(SAL) COUNT(SAL)
GD
GJ
---------- --------- ---------- ---------- ---------- ---------10
8750
3
0
1
20
10875
5
0
1
30
9400
6
0
1
29025
14
1
1
SQL> ed
Wrote file afiedt.buf
1 select deptno,job,sum(sal),count(sal),grouping(deptno)gd, grouping(job)gj
2* from emp having grouping(deptno)=1 or grouping(job)=1 group by cube(deptno
,job)
SQL> /
DEPTNO JOB
SUM(SAL) COUNT(SAL)
GD
GJ
---------- --------- ---------- ---------- ---------- ---------CLERK
4150
4
1
0
SALESMAN
5600
4
1
0
PRESIDENT
5000
1
1
0
MANAGER
8275
3
1
0
ANALYST
6000
2
1
0
10
8750
3
0
1
20
10875
5
0
1
30
9400
6
0
1
29025
14
1
1
9 rows selected.
SQL> ed
Wrote file afiedt.buf
1 select deptno,job,sum(sal),count(sal),grouping(deptno)gd, grouping(job)gj
2* from emp having grouping(deptno)=1 or grouping(job)=1 group by deptno,job
SQL> /
no rows selected
SQL> ed

Wrote file afiedt.buf


1 select deptno,job,sum(sal),count(sal),grouping(deptno)gd, grouping(job)gj
2* from emp having grouping(deptno)=1 or grouping(job)=1 group by cube(deptno
,job)
SQL> /
DEPTNO JOB
SUM(SAL) COUNT(SAL)
GD
GJ
---------- --------- ---------- ---------- ---------- ---------CLERK
4150
4
1
0
SALESMAN
5600
4
1
0
PRESIDENT
5000
1
1
0
MANAGER
8275
3
1
0
ANALYST
6000
2
1
0
10
8750
3
0
1
20
10875
5
0
1
30
9400
6
0
1
29025
14
1
1
9 rows selected.
SQL> ed
Wrote file afiedt.buf
1 select deptno,job,sum(sal),count(sal),grouping(deptno)gd, grouping(job)gj
2* from emp having not grouping(deptno)=1 or grouping(job)=1 group by cube(de
ptno,job)
SQL> /
DEPTNO JOB
SUM(SAL) COUNT(SAL)
GD
GJ
---------- --------- ---------- ---------- ---------- ---------29025
14
1
1
10
8750
3
0
1
10 CLERK
1300
1
0
0
10 MANAGER
2450
1
0
0
10 PRESIDENT
5000
1
0
0
20
10875
5
0
1
20 CLERK
1900
2
0
0
20 ANALYST
6000
2
0
0
20 MANAGER
2975
1
0
0
30
9400
6
0
1
30 CLERK
950
1
0
0
30 MANAGER
2850
1
0
0
30 SALESMAN
5600
4
0
0
13 rows selected.
SQL> ed
Wrote file afiedt.buf
1 select deptno,job,sum(sal),count(sal),grouping(deptno)gd, grouping(job)gj
2* from emp group by grouping sets((deptno),(job),())
SQL> /
DEPTNO JOB
SUM(SAL) COUNT(SAL)
GD
GJ
---------- --------- ---------- ---------- ---------- ---------CLERK
4150
4
1
0
SALESMAN
5600
4
1
0
PRESIDENT
5000
1
1
0
MANAGER
8275
3
1
0

ANALYST
10
20
30

6000
8750
10875
9400
29025

2
3
5
6
14

1
0
0
0
1

0
1
1
1
1

9 rows selected.
SQL> ed
Wrote file afiedt.buf
1 select deptno,job,sum(sal),count(sal),grouping(deptno)gd, grouping(job)gj
2* from emp group by grouping sets((deptno),(job),())
SQL> /
DEPTNO JOB
SUM(SAL) COUNT(SAL)
GD
GJ
---------- --------- ---------- ---------- ---------- ---------CLERK
4150
4
1
0
SALESMAN
5600
4
1
0
PRESIDENT
5000
1
1
0
MANAGER
8275
3
1
0
ANALYST
6000
2
1
0
10
8750
3
0
1
20
10875
5
0
1
30
9400
6
0
1
29025
14
1
1
9 rows selected.

SQL> ed
Wrote file afiedt.buf
1* select deptno from dept union all select deptno from emp
SQL> /
DEPTNO
---------10
20
30
40
20
30
30
20
30
30
10
20
10
30
20
30
20
10
18 rows selected.

SQL> ed
Wrote file afiedt.buf
1* select deptno from dept union select deptno from emp
SQL> /
DEPTNO
---------10
20
30
40
SQL> ed
Wrote file afiedt.buf
1* select deptno from dept intersect select deptno from emp
SQL> /
DEPTNO
---------10
20
30
SQL> ed
Wrote file afiedt.buf
1* select deptno from dept minus select deptno from emp
SQL> /
DEPTNO
---------40
SQL> ed
Wrote file afiedt.buf
1* select deptno from emp minus select deptno from dept
SQL> //
no rows selected

SQL> ED
Wrote file afiedt.buf
1* SELECT JOB,SUM(SAL) FROM EMP GROUP BY JOB UNION SELECT TO_CHAR(DEPTNO),SUM(
SAL)FROM EMP GROUP B
SQL> /
JOB
SUM(SAL)
---------------------------------------- ---------10
8750
20
10875
30
9400
ANALYST
6000
CLERK
4150

MANAGER
PRESIDENT
SALESMAN

8275
5000
5600

8 rows selected.
SQL> ED
Wrote file afiedt.buf
1* SELECT JOB,NULL,SUM(SAL) FROM EMP GROUP BY JOB UNION SELECT TO_CHAR(DEPTNO)
,SUM(SAL)FROM EMP GR
SQL> /
SELECT JOB,NULL,SUM(SAL) FROM EMP GROUP BY JOB UNION SELECT TO_CHAR(DEPTNO),SUM(
SAL)FROM EMP GROUP B
*
ERROR at line 1:
ORA-01789: query block has incorrect number of result columns
SQL> ED
Wrote file afiedt.buf
1* SELECT JOB,NULL,SUM(SAL) FROM EMP GROUP BY JOB UNION SELECT NULL,TO_CHAR(DE
PTNO),SUM(SAL)FROM E
SQL> /
JOB
NULL
SUM(SAL)
--------- ---------------------------------------- ---------ANALYST
6000
CLERK
4150
MANAGER
8275
PRESIDENT
5000
SALESMAN
5600
10
8750
20
10875
30
9400
8 rows selected.
SQL> ED
Wrote file afiedt.buf
1* SELECT DEPTNO,NULL,SUM(SAL)FROM EMP GROUP BY DEPTNO UNION SELECT NULL,JOB,S
UM(SAL) FROM EMP GRO
SQL> /
DEPTNO NULL
SUM(SAL)
---------- --------- ---------10
8750
20
10875
30
9400
ANALYST
6000
CLERK
4150
MANAGER
8275
PRESIDENT
5000
SALESMAN
5600
8 rows selected.

SQL> ED
Wrote file afiedt.buf
1* SELECT DEPTNO,SUM(SAL)FROM EMP GROUP BY DEPTNO UNION SELECT JOB,SUM(SAL) FR
OM EMP GROUP BY JOB
SQL> /
SELECT DEPTNO,SUM(SAL)FROM EMP GROUP BY DEPTNO UNION SELECT JOB,SUM(SAL) FROM EM
P GROUP BY JOB
*
ERROR at line 1:
ORA-01790: expression must have same datatype as corresponding expression
SQL> ED
Wrote file afiedt.buf
1* SELECT JOB,SUM(SAL) FROM EMP GROUP BY JOB UNION SELECT DEPTNO,SUM(SAL)FROM
EMP GROUP BY DEPTNO
SQL> /
SELECT JOB,SUM(SAL) FROM EMP GROUP BY JOB UNION SELECT DEPTNO,SUM(SAL)FROM EMP G
ROUP BY DEPTNO
*
ERROR at line 1:
ORA-01790: expression must have same datatype as corresponding expression
SQL> ED
Wrote file afiedt.buf
1* SELECT DEPTNO,NULL AS JOB,SUM(SAL)FROM EMP GROUP BY DEPTNO UNION SELECT NUL
L,JOB,SUM(SAL) FROM
SQL> /
DEPTNO JOB
SUM(SAL)
---------- --------- ---------10
8750
20
10875
30
9400
ANALYST
6000
CLERK
4150
MANAGER
8275
PRESIDENT
5000
SALESMAN
5600
8 rows selected.
SQL> SELECT * FROM DEPT;
DEPTNO
---------10
20
30
40

DNAME
-------------ACCOUNTING
RESEARCH
SALES
OPERATIONS

LOC
------------NEW YORK
DALLAS
CHICAGO
BOSTON

SQL> ED
Wrote file afiedt.buf
1* SELECT * FROM EMP WHERE DEPTNO IN(SELECT DEPTNO FROM DEPT WHERE LOC IN('NEW

YORK','DALLAS'))
SQL> /
EMPNO
EPTNO
-------------7902
20
7876
20
7788
20
7566
20
7369
20

ENAME

JOB

MGR HIREDATE

SAL

COMM

---------- --------- ---------- --------- ---------- ---------- ----FORD

ANALYST

7566 03-DEC-81

3000

ADAMS

CLERK

7788 12-JAN-83

1100

SCOTT

ANALYST

7566 09-DEC-82

3000

JONES

MANAGER

7839 02-APR-81

2975

SMITH

CLERK

7902 17-DEC-80

800

MGR HIREDATE

SAL

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

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 09-DEC-82

3000

KING

PRESIDENT

17-NOV-81

5000

TURNER

SALESMAN

7698 08-SEP-81

1500

ADAMS

CLERK

7788 12-JAN-83

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 * FROM EMP WHERE JOB IN(SELECT JOB FROM EMP WHERE ENAME='BLAKE');
EMPNO ENAME

JOB

MGR HIREDATE

SAL

COMM

EPTNO
-------------7782
10
7698
30
7566
20

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

MANAGER

7839 09-JUN-81

2450

BLAKE

MANAGER

7839 01-MAY-81

2850

JONES

MANAGER

7839 02-APR-81

2975

SQL> ED
Wrote file afiedt.buf
1* SELECT * FROM EMP WHERE JOB =(SELECT JOB FROM EMP WHERE ENAME='BLAKE')AND S
AL>=(SELECT SAL
SQL> /
EMPNO
EPTNO
-------------7566
20
7698
30

ENAME

JOB

MGR HIREDATE

SAL

COMM

---------- --------- ---------- --------- ---------- ---------- ----JONES

MANAGER

7839 02-APR-81

2975

BLAKE

MANAGER

7839 01-MAY-81

2850

MGR HIREDATE

SAL

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

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 09-DEC-82

3000

KING

PRESIDENT

17-NOV-81

5000

TURNER

SALESMAN

7698 08-SEP-81

1500

ADAMS

CLERK

7788 12-JAN-83

1100

JAMES

CLERK

7698 03-DEC-81

950

FORD

ANALYST

7566 03-DEC-81

3000

1400

7934 MILLER

CLERK

7782 23-JAN-82

1300

10
14 rows selected.
SQL> ED
Wrote file afiedt.buf
1* SELECT * FROM EMP WHERE SAL=(SELECT MIN(SAL)FROM EMP)
SQL> /
EMPNO ENAME
JOB
MGR HIREDATE
SAL
COMM
D
EPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- --------7369 SMITH
CLERK
7902 17-DEC-80
800
20

SQL> ED
Wrote file afiedt.buf
1* SELECT * FROM EMP WHERE SAL IN(SELECT MIN(SAL)FROM EMP GROUP BY DEPTNO,MIN(
SAL))
SQL> /
SELECT * FROM EMP WHERE SAL IN(SELECT MIN(SAL)FROM EMP GROUP BY DEPTNO,MIN(SAL))
*
ERROR at line 1:
ORA-00934: group function is not allowed here
SQL> ED
Wrote file afiedt.buf
1* SELECT * FROM EMP WHERE (DEPTNO,SAL) IN(SELECT MIN(SAL)FROM EMP GROUP BY DE
PTNO,MIN(SAL))
SQL> /
SELECT * FROM EMP WHERE (DEPTNO,SAL) IN(SELECT MIN(SAL)FROM EMP GROUP BY DEPTNO,
MIN(SAL))
*
ERROR at line 1:
ORA-00920: invalid relational operator
SQL> ED
Wrote file afiedt.buf
1* SELECT * FROM EMP WHERE (DEPTNO,SAL) IN(SELECT MIN(SAL)FROM EMP GROUP BY DE
PTNO)
SQL> /
SELECT * FROM EMP WHERE (DEPTNO,SAL) IN(SELECT MIN(SAL)FROM EMP GROUP BY DEPTNO)
*
ERROR at line 1:
ORA-00947: not enough values
SQL> ED

Wrote file afiedt.buf


1* SELECT * FROM EMP WHERE (DEPTNO,SAL)IN(SELECT DEPTNO,MIN(SAL)FROM EMP GROUP
BY DEPTNO)
SQL> /
EMPNO
EPTNO
-------------7900
30
7369
20
7934
10

ENAME

JOB

MGR HIREDATE

SAL

COMM

---------- --------- ---------- --------- ---------- ---------- ----JAMES

CLERK

7698 03-DEC-81

950

SMITH

CLERK

7902 17-DEC-80

800

MILLER

CLERK

7782 23-JAN-82

1300

SQL> ED
Wrote file afiedt.buf
1* SELECT * FROM EMP E1 WHERE E1.SAL >(SELECT AVG(SAL)FROM EMP E2 WHERE E2.DEP
TNO=E1.DEPTNO)
SQL> /
EMPNO
EPTNO
-------------7499
30
7566
20
7698
30
7788
20
7839
10
7902
20

ENAME

JOB

MGR HIREDATE

SAL

COMM

---------- --------- ---------- --------- ---------- ---------- ----ALLEN

SALESMAN

7698 20-FEB-81

1600

JONES

MANAGER

7839 02-APR-81

2975

BLAKE

MANAGER

7839 01-MAY-81

2850

SCOTT

ANALYST

7566 09-DEC-82

3000

KING

PRESIDENT

17-NOV-81

5000

FORD

ANALYST

7566 03-DEC-81

3000

300

6 rows selected.
SQL> ED
Wrote file afiedt.buf
1* SELECT * FROM EMP E1 WHERE E1.SAL <(SELECT AVG(SAL)FROM EMP E2 WHERE E2.DEP
TNO=E1.DEPTNO)
SQL> /
EMPNO
EPTNO
-------------7369
20
7521
30

ENAME

JOB

MGR HIREDATE

SAL

COMM

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

CLERK

7902 17-DEC-80

800

WARD

SALESMAN

7698 22-FEB-81

1250

500

7654 MARTIN

SALESMAN

7698 28-SEP-81

1250

7782 CLARK

MANAGER

7839 09-JUN-81

2450

7844 TURNER

SALESMAN

7698 08-SEP-81

1500

7876 ADAMS

CLERK

7788 12-JAN-83

1100

7900 JAMES

CLERK

7698 03-DEC-81

950

7934 MILLER

CLERK

7782 23-JAN-82

1300

1400

30
10
0

30
20
30
10
8 rows selected.
SQL> SELECT * FROM DEPT;
DEPTNO
---------10
20
30
40

DNAME
-------------ACCOUNTING
RESEARCH
SALES
OPERATIONS

LOC
------------NEW YORK
DALLAS
CHICAGO
BOSTON

SQL> ED
Wrote file afiedt.buf
1* ALTER TABLE DEPT ADD DEPT_TOTAL(NUMBER (10,2))
SQL> /
ALTER TABLE DEPT ADD DEPT_TOTAL(NUMBER (10,2))
*
ERROR at line 1:
ORA-00902: invalid datatype
SQL> ED
Wrote file afiedt.buf
1* ALTER TABLE DEPT ADD DEPT_TOTAL NUMBER (10,2)
SQL> /
Table altered.
SQL> DESC DEPT
Name
Null?
----------------------------------------------------- --------------------------DEPTNO
DNAME
LOC
DEPT_TOTAL

Type
---------------NUMBER(2)
VARCHAR2(14)
VARCHAR2(13)
NUMBER(10,2)

SQL> ED
Wrote file afiedt.buf
1* UPDATE DEPT D SET DEPT_TOTAL=(SELECT SUM(SAL)FROM EMP E WHERE E.DEPTNO=D.DE
PTNO)
SQL> /
4 rows updated.

SQL> SELECT * FROM DEPT;


DEPTNO
---------10
20
30
40

DNAME
-------------ACCOUNTING
RESEARCH
SALES
OPERATIONS

LOC
DEPT_TOTAL
------------- ---------NEW YORK
8750
DALLAS
10875
CHICAGO
9400
BOSTON

SQL>
SQL> ED
Wrote file afiedt.buf
1* UPDATE DEPT D SET DEPT_TOTAL=(SELECT NVL (SUM(SAL),0)FROM EMP E WHERE E.DE
PTNO=D.DEPTNO)
SQL> /
4 rows updated.
SQL> SELECT * FROM DEPT;
DEPTNO
---------10
20
30
40

DNAME
-------------ACCOUNTING
RESEARCH
SALES
OPERATIONS

LOC
DEPT_TOTAL
------------- ---------NEW YORK
8750
DALLAS
10875
CHICAGO
9400
BOSTON
0

S-ar putea să vă placă și