-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path20200717.sql
More file actions
170 lines (126 loc) · 3.35 KB
/
20200717.sql
File metadata and controls
170 lines (126 loc) · 3.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
DROP TABLE emp_test2;
CREATE TABLE emp_test2 AS
SELECT empno, ename
FROM emp
WHERE 1 !=1;
SELECT *
FROM emp_test2;
SELECT 9999 empno, 'brown' ename FROM dual
UNION ALL
SELECT 9998 empno, 'sally' ename FROM dual;
INSERT ALL
INTO emp_test VALUES (empno, ename)
INTO emp_test2 (empno) VALUES (empno)
SELECT 9999 empno, 'brown' ename FROM dual
UNION ALL
SELECT 9998 empno, 'sally' ename FROM dual;
SELECT *
FROM emp_test2
;
RollBACK;
INSERT ALL
WHEN empno >= 9999 THEN
INTO emp_test VALUES (empno, ename)
WHEN empno >= 9998 THEN
INTO emp_test2 VALUES (empno, ename)
ELSE
INTO emp_test2 (empno) VALUES (empno)
SELECT 9999 empno, 'brown' ename FROM dual
UNION ALL
SELECT 9998 empno, 'sally' ename FROM dual;
SELECT *
FROM emp_test2;
INSERT FIRST
WHEN empno >= 9999 THEN
INTO emp_test VALUES (empno, ename)
WHEN empno >= 9998 THEN
INTO emp_test2 VALUES (empno, ename)
ELSE
INTO emp_test2 (empno) VALUES (empno)
SELECT 9999 empno, 'brown' ename FROM dual
UNION ALL
SELECT 9998 empno, 'sally' ename FROM dual;
SELECT *
FROM emp_test;
ROLLBACK;
INSERT INTO emp_test
SELECT empno, ename
FROM emp
WHERE empno=7369;
SELECT *
FROM emp;
MERGE INTO emp_test a
USING emp b
ON (a.empno = b.empno)
WHEN MATCHED THEN
UPDATE SET a.ename = b.ename || '_m'
WHEN NOT MATCHED THEN
INSERT (empno, ename)
VALUES (b.empno, b.ename);
SELECT *
FROM emp_test;
MERGE INTO emp_test
USING dual
ON (emp_test.empno =:empno)
WHEN MATCHED THEN
UPDATE SET ename = :ename
WHEN NOT MATCHED THEN
INSERT VALUES (:empno ,:ename);
CREATE TABLE dept_test3 AS
SELECT *
FROM dept
WHERE deptno IN (10,20);
SELECT *
FROM dept_test3;
MERGE INTO dept_test3
USING dept
ON (dept_test3.deptno = dept.deptno)
WHEN MATCHED THEN
UPDATE SET dept_test3.loc = dept.loc || '_m'
WHEN NOT MATCHED THEN
INSERT VALUES (dept.deptno, dept.dname, dept.loc);
MERGE INTO dept_test3
USING dual
ON (dept_test3.deptno = :deptno)
WHEN MATCHED THEN
UPDATE SET dept_test3.dname = :dname, dept_test3.loc = :loc
WHEN NOT MATCHED THEN
INSERT VALUES (:deptno, :dname, :loc);
SELECT *
FROM dept_test3;
SELECT deptno, SUM(sal)
FROM emp
GROUP BY deptno
UNION
SELECT null deptno, SUM(sal)
FROM emp;
SELECT DECODE(rn, 1, deptno, 2, null) deptno, SUM(sum_sal)
FROM
(SELECT deptno, SUM(sal) sum_sal
FROM emp
GROUP BY deptno) a,
(SELECT ROWNUM rn
FROM dept
WHERE ROWNUM <=2) b
GROUP BY DECODE(rn, 1, deptno, 2, null);
SELECT job, deptno, SUM(sal + NVL(comm,0)) sal
FROM emp
GROUP BY ROLLUP (job, deptno);
SELECT deptno, SUM(sal)
FROM emp
GROUP BY ROLLUP(deptno);
SELECT job, deptno, SUM(sal + NVL(comm,0)) sal
FROM emp
GROUP BY ROLLUP (job, deptno);
SELECT job, deptno, SUM(sal + NVL(comm,0)) sal
FROM emp
GROUP BY ROLLUP (deptno,job);
SELECT job, deptno,GROUPING(job), GROUPING(deptno), SUM(sal + NVL(comm,0)) sal
FROM emp
GROUP BY ROLLUP (job,deptno);
SELECT DECODE(GROUPING(job) + GROUPING(deptno),2,'총계',job) job ,deptno, SUM(sal + NVL(comm,0)) sal
FROM emp
GROUP BY ROLLUP (job,deptno);
SELECT DECODE(GROUPING(job) + GROUPING(deptno),2,'총',job) job , DECODE(GROUPING(job) + GROUPING(deptno),2,'계',1,'소계',deptno) deptno, SUM(sal + NVL(comm,0)) sal
FROM emp
GROUP BY ROLLUP (job,deptno);