-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathsubquery_exam.sql
More file actions
305 lines (180 loc) · 5.17 KB
/
subquery_exam.sql
File metadata and controls
305 lines (180 loc) · 5.17 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
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
-- sub query Exam
-- 20210615
select * from emp;
-- 43.사원 번호가 7788인 사원과 담당 업무가 같은
-- 사원을 표시(사원 이름과 담당업무)하시오.
select job from emp where empno=7788;
select ename, job
from emp
where job= (select job from emp where empno=7788) --'ANALYST' --() -- 7788 사원의 업무
;
-- 44. 사원번호가 7499인 사원보다
-- 급여가 많은
-- 사원을 표시하시오. 사원이름과 담당 업무
select sal from emp where empno=7499;
select ename, job
from emp
where sal>(select sal from emp where empno=7499)
;
-- 45. 최소급여를 받는
-- 사원의 이름, 담당업무 및 급여를 표시하시오. (그룹함수 사용)
select min(sal) from emp;
select ename, job, sal
from emp
where sal = (select min(sal) from emp)
;
select ename,job, sal
from emp
where sal <= all (select sal from emp)
;
-- 46. 평균급여가 가장 적은 직급의
-- 직급 이름과 직급의 평균을 구하시오.
select job, avg(sal)
from emp
group by job
having avg(sal) <= all (
select avg(sal)
from emp
group by job)
;
-- 부서별 평균의 최소 평균 값
select avg(sal)
from emp
group by job
;
select min(avg)
from (
select avg(sal) as avg
from emp
group by job
)
;
select job, avg(sal)
from emp
group by job
having avg(sal) = (
select min(avg)
from (
select avg(sal) as avg
from emp
group by job
)
)
;
-- 47. 각 부서의 최소 급여를 받는
-- 사원의 이름, 급여, 부서번호를 표시하시오.
select deptno, min(sal)
from emp
group by deptno
;
select *
from emp e1
where sal in (
select min(sal)
from emp e2
where e1.deptno = e2.deptno
group by deptno
)
;
-- 48. 담당업무가 ANALYST 인 사원보다
-- 급여가 적으면서
-- 업무가 ANALYST가 아닌
-- 사원들을 표시(사원번호, 이름, 담당 업무, 급여)하시오.
select distinct sal from emp where job='ANALYST';
select empno, ename, job, sal
from emp
where sal < all (select distinct sal from emp where job='ANALYST')
and job != 'ANALYST'
;
-- 49. 부하직원이 없는 사원의 이름을 표시하시오.
select distinct mgr from emp where mgr is not null;
select ename, mgr
from emp
where empno not in (select distinct mgr from emp where mgr is not null)
;
-- 50. 부하직원이 있는 사원의 이름을 표시하시오.
select ename, mgr
from emp
where empno in (select distinct mgr from emp where mgr is not null)
;
-- 51. BLAKE와 동일한 부서에 속한
-- 사원의 이름과 입사일을 표시하는 질의를 작성하시오.
-- ( 단 BLAKE는 제외 )
select deptno from emp where ename='BLAKE';
select ename, hiredate
from emp
where deptno = (select deptno from emp where ename='BLAKE')
and ename != 'BLAKE'
;
-- 52. 급여가 평균 급여보다 많은
-- 사원들의 사원 번호와 이름을 표시하되
-- 결과를 급여에 대해서 오름차순으로 정렬하시오.
SELECT AVG(SAL) FROM EMP;
select empno, ename, SAL
from emp
WHERE SAL > (SELECT AVG(SAL) FROM EMP)
order by sal asc
;
-- 53. 이름에 K가 포함된 사원과 같은 부서에서 일하는
-- 사원의 사원 번호와 이름을 표시하시오.
SELECT DISTINCT DEPTNO FROM EMP WHERE ENAME LIKE '%K%';
SELECT EMPNO, ENAME, DEPTNO
FROM EMP
WHERE DEPTNO IN (SELECT DISTINCT DEPTNO FROM EMP WHERE ENAME LIKE '%K%')
;
-- 54. 부서위치가 DALLAS인
-- 사원의 이름과 부서번호 및 담당업무를 표시하시오.
DESC DEPT;
SELECT * FROM DEPT;
SELECT DEPTNO FROM DEPT WHERE LOC='DALLAS';
SELECT ENAME, DEPTNO, JOB
FROM EMP
WHERE DEPTNO IN (SELECT DEPTNO FROM DEPT WHERE LOC='DALLAS')
;
-- 55. KING에게 보고하는 -- MGR -> KING의 사원번호
-- 사원의 이름과 급여를 표시하시오.
SELECT EMPNO FROM EMP WHERE ENAME='KING';
SELECT ENAME, SAL, JOB
FROM EMP
WHERE MGR=(SELECT EMPNO FROM EMP WHERE ENAME='KING')
;
-- 56. RESEARCH 부서의 사원에 대한
-- 부서번호, 사원이름 및 담당 업무를 표시하시오.
SELECT DEPTNO FROM DEPT WHERE DNAME='RESEARCH';
SELECT DEPTNO, ENAME, JOB
FROM EMP
WHERE DEPTNO=(SELECT DEPTNO FROM DEPT WHERE DNAME='RESEARCH')
;
SELECT E.DEPTNO, EMPNO, JOB
FROM EMP E, DEPT D
WHERE E.DEPTNO=D.DEPTNO
AND DNAME='RESEARCH'
;
-- 57. 평균 월급보다 많은 급여를 받고
-- 이름에 M이 포함된 사원과 같은 부서에서 근무하는
-- 사원의 사원 번호, 이름, 급여를 표시하시오.
-- 평균월급
SELECT AVG(SAL) FROM EMP;
SELECT DISTINCT DEPTNO FROM EMP WHERE ENAME LIKE '%M%';
SELECT EMPNO, ENAME, SAL
FROM EMP
WHERE SAL > (SELECT AVG(SAL) FROM EMP)
AND DEPTNO IN (SELECT DISTINCT DEPTNO FROM EMP WHERE ENAME LIKE '%M%')
;
-- 58. 평균급여가 가장 적은 업무를 찾으시오.
SELECT JOB
FROM EMP
GROUP BY JOB
HAVING AVG(SAL) <= ALL (
SELECT AVG(SAL)
FROM EMP
GROUP BY JOB
)
;
-- 59. 담당업무가 MANAGER 인 사원이 소속된 부서와 동일한 부서의
-- 사원을 표시하시오.
SELECT DISTINCT DEPTNO FROM EMP WHERE JOB='MANAGER';
SELECT *
FROM EMP
WHERE DEPTNO IN (SELECT DISTINCT DEPTNO FROM EMP WHERE JOB='MANAGER')
;