๋ชฉ์ฐจ

SQL SELECT ์ฟผ๋ฆฌ ์คํ ์์๐
SELECT ์ฟผ๋ฆฌ์์ ์คํ ์์๋ ์๋์ ๊ฐ๋ค.

๋ถ๋๋ฝ์ง๋ง ์ฒ์์ ์ ๋ฐ ์์๊ฐ ์๋ ์ง ๋ชฐ๋๊ณ ์ต๊ทผ์ ์์๋ค.
์๋ฌด๊ฒ๋ ๋ชจ๋ฅด๋ ์ด๋ณด ์์ ์ ๊ทธ๋ฅ ์ผ๋ค๊ณ ์น๋ฉด ์๊ฐ์ด ํ๋ฅด๋ฉด์๋ ์ ์ ์ดํดํ๋ฉด์ ์ฐ๋ ค๊ณ ํ๋ค.
์ ์์๋ฅผ ๋ฐ๋์ ๊ธฐ์ตํ๊ณ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํด์ผ ํ๋ฉฐ ์ด์ ๋ฐ๋ฅธ ํผํฌ๋จผ์ค์ ์ฐจ์ด๊ฐ ํฌ๋ค.
์์ SELECT SQL๐
SELECT
JOB_ID
,AVG(SALARY) SAL_AVG
FROM
EMPLOYEES2 e
WHERE
SALARY > 13000
GROUP BY
JOB_ID
HAVING
COUNT(*) > 1
ORDER BY SAL_AVG DESC
;
์ ๊ฐ๋จํ ์ฟผ๋ฆฌ๋ฌธ์์๋ ๋ด๋ถ์ ์ผ๋ก๋ 6๋จ๊ณ๋ฅผ ๊ฑฐ์น๋ค.

์ ์คํ ์์๋ฅผ ํ๋์ฉ ๋ฏ์ด ๋ณด๊ฒ ๋ค.๐
FROM์
์ฟผ๋ฆฌ์ ์ฒซ๋ฒ ์งธ ์คํ์์์ธ FROM์ ์์ ์๋์ฒ๋ผ EMPLOYEES2 ํ ์ด๋ธ์ ์ ์ฒด ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์จ๋ค.
-- EMPLOYEES2ํ
์ด๋ธ์ ์ ์ฒด ๋ฐ์ดํฐ ์กฐํ
FROM EMPLOYEES2

WHERE์
WHERE์ ์์๋ ์ ์ฒด ๋ฐ์ดํฐ์์ ์๋์ฒ๋ผ ์กฐ๊ฑด์ ๋ง๋ ๊ฒฐ๊ณผ๋ฅผ ํํฐ๋งํ๋ค.
-- ๊ธ์ฌ๊ฐ 13000 ์ด์์ธ ๋ฐ์ดํฐ ํํฐ๋ง
WHERE SALARY > 13000

GROUP BY์
GROUP BY์ ์์๋ WHERE์ ๋ก ํํฐ๋ง๋ ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋ฃนํํ๋ ์์ ์ ํ๋ค.
(GROUP BYํ ์ปฌ๋ผ์ผ๋ก ์ค๋ณต์ ๊ฑฐ ํ ๊ทธ๋ฃนํํจ)
GROUP BY์ ์ฌ์ฉ ์ ๊ทธ๋ฃนํจ์๋ฅผ ์ฌ์ฉํ ์ ์์(count(), sum(), avg() ๋ฑ)
-- JOB_ID๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ทธ๋ฃนํ
GROUP BY JOB_ID

HAVING์
HAVING์ ์ GROUP BYํ ๋ฐ์ดํฐ์ ์กฐ๊ฑด์ ์ค ๋ ์ฌ์ฉ๋จ
HAVING์ ์์๋ ์ง๊ณํจ์๋ฅผ ์กฐ๊ฑด์ผ๋ก ์ฌ์ฉ๊ฐ๋ฅ
WHERE์ ๊ณผ๋ ๋ค๋ฅธ์ฉ๋๋ก ์ฌ์ฉ๋จ(WHERE์ ์ FROM์ ๋ค์์ ๋์จ ๋ฐ์ดํฐ ํํฐ๋ง, ์ฆ GROUP BY ์ ์ ํํฐ๋ง)
-- GROUP BYํ ๋ฐ์ดํฐ๊ฐ 1๊ฐ ์ด์์ธ ๊ฒ๋ง ์กฐํ
HAVING COUNT(*) > 1

SELECT์
์ฌ๋ฌ ์กฐ๊ฑด๋ค ํํฐ๋งํ ์ต์ข ๋ฐ์ดํฐ์์ ์ถ๋ ฅํ ๋ฐ์ดํฐ๋ฅผ ์ ํํ๋ ์ ์ด SELECT์ ์ด๋ค.
-- ์กฐ๊ฑด ์ฒ๋ฆฌ ํ ์ถ๋ ฅํ ๋ฐ์ดํฐ ์ ํ
SELECT JOB_ID, AVG(SALARY) SAL_AVG

ORDER BY ์ ๐คฉ
๋ง์ง๋ง ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ ์ง ์ ํ ๋ค ์ ํ์ฌํญ์ผ๋ก row์ ์์๋ฅผ ์ ๋ ฌํด์ฃผ๋ ์ ์ด ORDER BY ์ ์ด๋ค.
-- ํ๊ท ๊ฐ์ SAL_AVG๋ก ๋ณ์นญ์ ์ฃผ๊ณ ๊ทธ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ
ORDER BY SAL_AVG DESC

์ฐธ์กฐ : ๋ง์ด์๋ด ๋ธ๋ก๊ทธ, 2020.03.17, https://myjamong.tistory.com/172
[Oracle] SQL SELECT ์ฟผ๋ฆฌ ์คํ ์์ ์ฒ๋ฆฌ ๊ณผ์ :: ๋ง์ด์๋ชฝ
SELECT ์ฟผ๋ฆฌ ์คํ ์์ SQL ์ฟผ๋ฆฌ๋ฌธ์ ์์ฑํ ๋ ์ฌ์ฉ๋๋ WHERE, GROUP BY, ORDER BY ์ ๊ณผ ๊ฐ์ ๊ตฌ๋ฌธ์ ์คํํ๋๋ฐ ์์๊ฐ ์กด์ฌํฉ๋๋ค. ์ด ์์์ ์ํด์ ์ฟผ๋ฆฌ๊ฐ ์ฒ๋ฆฌ๋๊ณ ์ด๋ป๊ฒ ์ฟผ๋ฆฌ๋ฌธ์ ์์ฑํ๋๋์ ๋ฐ
myjamong.tistory.com

'IT > DataBase' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Oracle] Oracle ์ค๋ณต๋ฐ์ดํฐ ์ ๊ฑฐ(feat. delete from table + group by having) (0) | 2022.11.29 |
|---|---|
| [Oracle] system ๊ณ์ ๋น๋ฐ๋ฒํธ ๋ง๋ฃ/๋น๋ฐ๋ฒํธ ๋ณ๊ฒฝ(feat. ORA-00988) (0) | 2022.11.28 |
| [PostGreSQL] ํ์ฌ ์คํ์ค์ธ SQL ์กฐํ, ์ข ๋ฃ (0) | 2022.11.28 |
| [Oracle] oracle ์ฟผ๋ฆฌ ๋ก๊ทธ ๋ณด๊ธฐ (1) | 2022.11.28 |
| [PostGreSQL] ํ ์ด๋ธ/ํ ์ด๋ธ ๋ชฉ๋ก ์กฐํ (0) | 2022.11.28 |
๋๊ธ