| having์ | Having ์ + ์กฐ๊ฑด => group by๊ฐ ์์ ๋, ๊ทธ๋ฃน๋ค ์ค ์ ํํ ๋ ์ฌ์ฉ. ์ง๊ณํจ์ ๋ง์ด ์ - having ์ ์ ์ง๊ณํจ์ ๋ค์ด๊ฐ๋ ์ผ์ด ๋ง๋ค - group by๊ฐ ์์ ๋, ๊ทธ๋ฃน๋ค ์ค ์ ํํ ๋ having ์ ์ ์ฌ์ฉ - where ์ ์ ๊ทธ๋ฃน ํ์ฑ ์ ์ ์คํ๋๊ณ , having ์ ์ ๊ทธ๋ฃน ๊ตฌ์ฑ ํ์ ์ ์ฉ๋จ - having ์ ์ select ์ ์ ์คํ๋์ด์, select์์ ๊ณ ๋ฅด์ง ์์ ์ปฌ๋ผ์ ์กฐ๊ฑด์ผ๋ก ์จ๋ ๋จ Q) find the names and average salaries of all departments whose average salary is greater than 42000 => select dept_name, avg(salary) as avg_salary from instructor where TRUE // ์ฌ๊ธฐ์ 42000 ๋น๊ตํ๋ ๊ฑฐ ์๋!! ๊ทธ๋ฃน๋จ์๋ผ having์์ ํจ group by dept_name having avg(salary) > 42000; // ์ฌ๊ธฐ์ ์กฐ๊ฑด ๋ง์กฑํ๋ ๊ทธ๋ฃน ์ ํํจ |
| ์ค์ฒฉ ์ง์๋ฌธ | ์ค์ฒฉ ์ง์๋ฌธ Nested Subqueries = ๋ค๋ฅธ ์ฟผ๋ฆฌ ๋ด์ ์ค์ฒฉ๋๋ select-from-where ๋ฌธ select -> ํฌํจ์ํฌ ์ปฌ๋ผ๋ค ์ด๊ฑฐ์ ์ผ๋ถ ์ปฌ๋ผ์ ์ปฌ๋ผ๋ช ๋์ SFW ์๋ธ์ฟผ๋ฆฌ๋ก ๋์ฒด(๋จ์ผ๊ฐ ๋ด๋ ์๋ธ์ฟผ๋ฆฌ) from -> ํ ์ด๋ธ ์ด๊ฑฐ… ๊ทธ ํ ์ด๋ธ ์ค ํ๋๊ฐ SFW์ ์๋ธ์ฟผ๋ฆฌ(๊ฒฐ๊ณผ๋ relation)๋ก ๋์ฒด๋๋ ๊ฒฝ์ฐ where -> ์กฐ๊ฑด์ ์ฃผ๋๋ฐ ๊ทธ ์กฐ๊ฑด ์์ฒด๊ฐ ๊ทธ ์์ SFW๋ฅผ ํฌํจํ๋… ์ปฌ๋ผ <๋ช๊ฐ์ง ์ฐ์ฐ> (SFW ์๋ธ์ฟผ๋ฆฌ) ๋ฐ๊นฅ์ชฝ SFW = outer query ์์ชฝ SFW = sub query, inner query |
| select * from R where A = 5 and B < 100 |
select * from R where A in ( select A from S where B = 20 ) |
|
| select * from R where P |
select * from R where P |
Outer ์ง์ ์ชฝ์ ํฌํ์ ์ปฌ๋ผ๊ฐ์ด ํฌ์ ๋์ด ์คํ๋๋ค๋ฉด co-related
| select * from R where A in ( select A from S where B = 20 ) |
select * from R where A in ( select A from S where B = R.B ) |
'๋ฐ์ดํฐ๋ฒ ์ด์ค์ค๊ณ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [๋ฐ์ดํฐ๋ฒ ์ด์ค์ค๊ณ] 3-9 exist (0) | 2025.02.15 |
|---|---|
| [๋ฐ์ดํฐ๋ฒ ์ด์ค์ค๊ณ] 3-8 set ๋ฉค๋ฒ์ญ ( in / not in ) (0) | 2024.11.27 |
| [๋ฐ์ดํฐ๋ฒ ์ด์ค์ค๊ณ] 3-6 ์ง๊ณํจ์, group by (0) | 2024.11.25 |
| [๋ฐ์ดํฐ๋ฒ ์ด์ค์ค๊ณ] 3-5 set ์ฐ์ฐ, null๊ฐ (1) | 2024.11.24 |
| [๋ฐ์ดํฐ๋ฒ ์ด์ค์ค๊ณ] 3-4 ํํ ์ ๋ ฌ, where์ ์ ๋ถ (0) | 2024.11.23 |