์๋ธ ์ฟผ๋ฆฌ(Sub Query)
์ถ๊ฐ์ ๋ณด๋ฅผ ์ ๊ณตํ ๋ชฉ์ ์ผ๋ก ํ๋์ SQL ๋ฌธ์ฅ ๋ด๋ถ์ ์กด์ฌํ๋ SELECT ๋ฌธ์ฅ์ ๋งํ๋ค.
DML์ ์ํ๋ ๋ชจ๋ ๋ฌธ์ฅ์ ์๋ธ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
์๋ธ์ฟผ๋ฆฌ๋ SELECT ๋ฌธ์ฅ์์ ๋ฆฌ์คํธ๋ก ์ฌ ์ ์๋ค.
์ฐ์ฐ์์ ์ค๋ฅธ์ชฝ์ ์์ผํ๋ค.
Order by๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
SELECT ์ค์นผ๋ผ ์๋ธ์ฟผ๋ฆฌ
FROM ์ธ๋ผ์ธ ๋ทฐ
WHERE ์ค์ฒฉ ์๋ธ์ฟผ๋ฆฌ
์ค์ฒฉ ์๋ธ์ฟผ๋ฆฌ( Nested Subquery ) - WHERE ๋ฌธ์ ๋ํ๋๋ ์๋ธ์ฟผ๋ฆฌ
1.๋จ์ผ ํ
2.๋ณต์(๋ค์ค) ํ
3.๋ค์ค ์ปฌ๋ผ
์ธ๋ผ์ธ ๋ทฐ(Inline View) - FROM ๋ฌธ์ ๋ํ๋๋ ์๋ธ์ฟผ๋ฆฌ
์ค์นผ๋ผ ์๋ธ์ฟผ๋ฆฌ( Scalar Subquery ) - SELECT ๋ฌธ์ ๋ํ๋๋ ์๋ธ์ฟผ๋ฆฌ
์คํ ์์
์๋ธ์ฟผ๋ฆฌ ์คํ -> ๋ฉ์ธ(๋ถ๋ชจ) ์ฟผ๋ฆฌ ์คํ
์ฐ์ฐ์
1) ๋จ์ผํ ์ฐ์ฐ์
โถ =, >, <, >=, <=, <>
2) ๋ค์คํ ์ฐ์ฐ์
โถ in, any, all, exists, not
ex) ๊ธฐ๋ณธ๋ฌธ๋ฒ… < any(10 or 40 or 20 or 30 or 90)
์ฐธ๊ณ : [SQL] ์๋ธ์ฟผ๋ฆฌ(Sub-Query) (tistory.com)
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
|
/*
SELECT
FROM
WHERE
*/
SELECT e.employee_id, e.first_name
FROM employees e, departments d
WHERE e.department_id = d.department_id
AND e.employee_id = 103;
SELECT a.first_name, a.employee_id,
a.manager_id ,b.employee_id,
b.first_name
FROM employees a, employees b -- a๋ ์ฌ์ b๋ ์์ฌ
WHERE a.manager_id = b.manager_id;
--SUB QUERY
--QUERY์์ QUERY
--ํ๊ฐ์ ํ( ROW) ์์ ๊ฒฐ๊ณผ ๊ฐ์ด ๋ฐํ๋๋ QUERY
--RECORD -> ํ๋ช
์ ๋ฐ์ดํฐ
/*
SELECT ๋จ์ผ row ๋จ์ผ column(์ฐ์ถ๋๋ ๋ฐ์ดํฐ๋ ํ๊ฐ ์นผ๋ผ๋ ํ๊ฐ) -- ๋ฌด์กฐ๊ฑด ํ๊ฐ๋ก ๋์์ผํจ.
FROM ๋ค์คROW๋ค์ค COLUMN์ด ๊ฐ๋ฅ
WHERE ๋ค์คROW๋ค์ค COLUMN์ด ๊ฐ๋ฅ
*/
SELECT first_name
FROM employees;
SELECT SUM(SALARY), AVG(salary) --๋๊ฐ์ด์์ ์นผ๋ผ์ ๋ฝ๋๊ฒ ๋ค์ค ์ปฌ๋ผ
FROM employees;
SELECT SUM(SALARY)
FROM employees;
--select์
SELECT employee_id, first_name,
(SELECT first_name
FROM employees
WHERE employee_id = 100)
FROM employees;
--SELECT first_name,
--(SELECT SUM(SALARY) FROM employees)
---FROM employees;
--FROM์
SELECT employee_id, first_name, salary
FROM (SELECT employee_id, first_name, salary
FROM employees
WHERE department_id = 100)
WHERE salary > 8000;
--๋ถ์๋ฒํธ๊ฐ 50๋ฒ ๊ธ์ฌ๊ฐ 6000์ด์์ธ ์ฌ์
SELECT
*
FROM employees
WHERE department_id = 50
and salary >= 6000;
-- FROM ์ ์ ์ฌ์ฉ
SELECT employee_id, salary, department_id
FROM ( SELECT employee_id, salary, department_id
FROM employees
WHERE department_id = 50)
WHERE salary >= 6000;
--๊ธ์ฌ์ ํฉ๊ณ์ ,์ธ์์ ,์ฌ์๋ช
, ์๊ธ
SELECT job_id
FROM employees
GROUP BY job_id;
--๊ธ์ฌ์ ํฉ๊ณ์ ,์ธ์์ ,์ฌ์๋ช
, ์๊ธ FROM์ ์ฌ์ฉํจ
SELECT e.employee_id, e.salary,
e.job_id, j.job_id,
j."๊ธ์ฌ์ ํฉ๊ณ", j.์ธ์์
FROM employees e, (SELECT job_id, SUM(salary) as "๊ธ์ฌ์ ํฉ๊ณ" ,count(*) as ์ธ์์
FROM employees
GROUP BY job_id) j
WHERE e.job_id = j.job_id;
--where
--ํ๊ท ๊ธ์ฌ๋ณด๋ค ๋ง์ด ๋ฐ๋ ์ฌ์
--ํ๊ท ๊ธ์ฌ๋ฅผ ์ญ ์ฟผ๋ฆฌ๋ก
SELECT first_name, salary
FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees);
-- department_id = 90์ ์
๋ฌด(job_id)๋ฅผ ์ฐ์ถํ๊ณ ์ถ๋ค
SELECT job_id, first_name
FROM employees
WHERE department_id = 90;
SELECT job_id, first_name, salary
FROM employees
WHERE job_id IN( SELECT job_id
FROM employees
WHERE department_id = 90);
--๋ถ์๋ณ๋ก ๊ฐ์ฅ ๊ธ์ฌ๋ฅผ ์ ๊ฒ ๋ฐ๋ ์ฌ์๊ณผ ๊ฐ์ ๊ธ์ฌ๋ฅผ ๋ฐ๋ ์ฌ์
SELECT e.employee_id, e.first_name,e.last_name, e.salary, d.department_name
FROM employees e, departments d
WHERE salary = (SELECT MIN(salary) FROM employees);
SELECT employee_id, first_name, salary, department_id
FROM employees
WHERE salary IN (SELECT MIN(salary)
FROM employees
GROUP BY department_id);
--๋ถ์๋ณ๋ก ๊ฐ์ฅ ๊ธ์ฌ๋ฅผ ์ ๊ฒ ๋ฐ๋ ์ฌ์๊ณผ ๊ธ์ฌ
SELECT department_id, first_name, salary
FROM employees
WHERE (department_id,salary) IN(SELECT department_id, MIN(salary)
FROM employees
GROUP BY department_id)
ORDER BY department_id;
SELECT
*
FROM departments;
SELECT
*
FROM employees;
|
cs |
'๐ฆ ๋ฐ์ดํฐ ๋ฒ ์ด์ค (DB) ๐ฆ > ๐ พ ์ค๋ผํด DB & SQL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
OVER, PARTITION BY (0) | 2021.02.15 |
---|---|
์งํฉ (UNION, INTERSECT, MINUS) (0) | 2021.02.15 |
ํน์ ์ฟผ๋ฆฌ CASE, DECODE (0) | 2021.02.15 |
JOIN๋ฌธ - ๋ฌธ์ 2 (0) | 2021.02.10 |
JOIN๋ฌธ - ๋ฌธ์ 1 (0) | 2021.02.10 |
๋๊ธ