๊ณต๋ถํ๊ณ ์ ํํ๋ ๊ฒ์ ์ข์ํฉ๋๋ค. ๋น ๋ฐ์ดํฐ์ ์ธ๊ณต์ง๋ฅ์ ์ค๋ ๊ฒฝ๋ ฅ์ด ์์ต๋๋ค.
20๋ ํ์ ๋ฐ์ดํฐ๋ถ์๊ฐ ๊ฒฝ๋ ฅ, 5๋ ๋ฐ์ดํฐ ๋ถ์ ๊ฐ์!
๋น ๋ฐ์ดํฐ ๋ฐ ์ธ๊ณต์ง๋ฅ ๋ถ์ผ ๊ธฐ์ ๋ฐ ๊ณต๊ณต๊ธฐ๊ด ์๋ฌธ ๋ฐ ์ถ๊ฐ
๋น ๋ฐ์ดํฐ ๋ถ์๊ธฐ์ฌ ํ๊ถ์์ฑ ํ๊ธฐ, ์ค๊ธฐ ์ ์
์ธ๊ณต์ง๋ฅ ๋ถ์ผ ์คํํธ์ ๋ํ
Courses
Reviews
- [2025] SQLD All-in-One for Non-Majors to Pass in One Shot
gamedragon148388
ยท
[2025] SQLD Problem Solutions - 176 Yellow Problems for Those Who Find SQLD Questions Difficult[2025] SQLD Problem Solutions - 176 Yellow Problems for Those Who Find SQLD Questions Difficultkimmincheol996755
ยท
[2025] SQLD Problem Solutions - 176 Yellow Problems for Those Who Find SQLD Questions Difficult[2025] SQLD Problem Solutions - 176 Yellow Problems for Those Who Find SQLD Questions Difficultwhtlsgod7106
ยท
[2025] SQLD Problem Solutions - 176 Yellow Problems for Those Who Find SQLD Questions Difficult[2025] SQLD Problem Solutions - 176 Yellow Problems for Those Who Find SQLD Questions Difficult- [2025] SQLD All-in-One for Non-Majors to Pass in One Shot
Posts
Q&A
ORDER BY ์๋ฃ ๋ฐ ๊ฐ์ ๋ด์ฉ์ ๋ฌธ์ ๊ฐ ์๋ ๊ฒ ๊ฐ์๋ฐ, ์ฒดํฌ ๋ถํ๋๋ฆฝ๋๋ค.
์๋ ํ์ธ์. ์ต์คํธ๋. ๊ต์ฌ์ ๋ด์ฉ์ ์๋์ ๊ฐ์ต๋๋ค.(์ฌ์ง)์์ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ฉด, comm ๊ธฐ์ค์ผ๋ก ๋จผ์ ์ ๋ ฌ์ด ๋๊ณ , ๊ทธ ๋ค์ ์ ๋ ฌ ๊ธฐ์ค์ผ๋ก sal ๊ฐ ์ ์ฉ์ด ๋ฉ๋๋ค.๊ทธ๋์ ์ค์ ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ๋ ์ข์ธก ์์ ์ด๋ฏธ์ง ์ฒ๋ผ ๋์ค๊ฒ ๋๋ ๊ฒ๋๋ค. ์๋ง๋ ๋๊ฐ์ง ์ด์ ๋๋ฌธ์ ํผ๋์ค๋ฌ์ฐ์ จ์๊ฑฐ ๊ฐ์๋ฐ์. ๊ทธ ์ธ์ ์ง์๋ค์ ๊ธ์ฌ๋ก ์ ๋ ฌ๋๋ค๋ผ๋ ๋ง ๋๋ฌธ์ ํผ๋์ ๋๋ฆฐ ๊ฒ ๊ฐ๋ค์. ์ด ๋ถ๋ถ์ ๋ช ํํ๊ฒ ์์ฑ ํ์๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ฐ๋๊ฒ ์ข๊ฒ ๋ค์. ์ด ์ฟผ๋ฆฌ๋ 1์ฐจ ์ ๋ ฌ ๊ธฐ์ค์ผ๋ก comm์ด NULL์ธ ์ง์๋ค์ ๋งจ ์์ ๋ฐฐ์นํ ํ ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ๋ค. ๊ทธ ๋ค์ 2์ฐจ ๊ธฐ์ค์ธ sal์ ๊ธฐ์ค์ผ๋ก ๋ค์ ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ๋ค.๋ณด์ํด๋๊ฒ์. ์ ๋ง ๊ฐ์ฌ๋๋ ค์. ๐ ๊ทธ๋ค์์ ์ฟผ๋ฆฌ์ comm ๋ค์ nulls first ๋ง ์๊ณ asc๊ฐ ์๋ต ๋์ด ์์ด์ ์ข ํผ๋์ค๋ฌ์ธ๊ฑฐ ๊ฐ๊ธด ํฉ๋๋ค. ๋ง์ฝ์ ์ด์ฟผ๋ฆฌ์์ asc๋ฅผ ์๋ตํ์ง ์๋๋ค๋ฉด ์๋์ ๊ฐ์ ์ฟผ๋ฆฌ๊ฐ ์์ฑ๋ฉ๋๋ค. SELECT ename, sal, comm FROM scott.emp WHERE sal BETWEEN 1000 AND 2000 and ename != 'MILLER' ORDER BY comm asc NULLS FIRST, sal asc;์ด ์ฟผ๋ฆฌ๋ comm ๊ธฐ์ค์ผ๋ก asc ์ ๋ ฌ์ ํ๋, ๋ ๊ฐ์ ๋จผ์ ์ถ๋ ฅํ๋ผ๋ ๋ง์ด๊ตฌ์. ๊ทธ ๋ค์ ์ ๋ ฌ ๊ธฐ์ค์ด sal(๊ธ์ฌ)์ด ๋๋ ๊ฒ์ ๋๋ค. ์ ๋ต๋ณ์ด ๋์์ด ๋์ จ์ผ๋ฉด ์ข๊ฒ ๋ค์. ๊ฐ์ฌํฉ๋๋ค.
- 1
- 2
- 29
Q&A
์ค์ ๋ชจ์๊ณ ์ฌ 2ํ 42๋ฒ ๋ฌธ์
์๋ ํ์ธ์. KOKODAE.KO ๋. ์ด ๋ฌธ์ ๋ ๊ฐ์ฅ ์ ์ ํ ์ฟผ๋ฆฌ๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ์ ๋๋ค. ๋ณด๊ธฐ 1๋ฒ๋ 4๋ฒ๊ณผ ๊ฐ์ด ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ๋ํ๋ ๋๋ค. ํ์ง๋ง ์ฟผ๋ฆฌ ์์ฒด๊ฐ ์ต์ ํ ๋์ด ์์ง๋ ๋ชปํฉ๋๋ค. ๊ทธ๋์ ๊ฐ์ฅ ์ ์ ํ ์ฟผ๋ฆฌ๋ 4๋ฒ์ด ์ ํฉํ๋ค๊ณ ํ ์ ์์ต๋๋ค. ์ค์ ๋ฌธ์ ๋ ์ด๋ฐ ์์ผ๋ก ๋์ฌ ์ ์์ต๋๋ค. ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ๋ํ๋ด๊ธฐ ๋๋ฌธ์ ์ค์ ์ํ์์๋ ์ด์๋ฅผ ์ ๊ธฐํ ์๋ ์์ต๋๋ค๋ง, ๊ฐ๊ธ์ ์ด๋ฉด ๊ฐ์ฅ ์ ์ ํด ๋ณด์ด๋ ๊ฒ์ผ๋ก ์ ํํ๋ ๊ฒ ๋ ์ข์ ๊ฑฐ ๊ฐ์ต๋๋ค. ์๋๋ ์ค์ต ์ฟผ๋ฆฌ์ ๋๋ค. ์ฐธ๊ณ ํ์ญ์์ค. ๊ฐ์ฌํฉ๋๋ค. -- 1. ๊ธฐ์กด ํ ์ด๋ธ์ด ์๋ค๋ฉด ์ญ์ (์ ํ ์ฌํญ) DROP TABLE EMPLOYEE; -- 2. EMPLOYEE ํ ์ด๋ธ ์์ฑ CREATE TABLE EMPLOYEE ( EMP_ID VARCHAR2(5) PRIMARY KEY, NAME VARCHAR2(50) NOT NULL, DEPT_ID VARCHAR2(5) NOT NULL, SALARY NUMBER(10) NOT NULL ); -- 3. ๋ฐ์ดํฐ ์ฝ์ INSERT INTO EMPLOYEE (EMP_ID, NAME, DEPT_ID, SALARY) VALUES ('E001', 'ํ๊ธธ๋', 'D001', 5000); INSERT INTO EMPLOYEE (EMP_ID, NAME, DEPT_ID, SALARY) VALUES ('E002', '๊น์ฒ ์', 'D001', 5500); INSERT INTO EMPLOYEE (EMP_ID, NAME, DEPT_ID, SALARY) VALUES ('E003', '์ด์ํฌ', 'D002', 4500); INSERT INTO EMPLOYEE (EMP_ID, NAME, DEPT_ID, SALARY) VALUES ('E004', '๋ฐ๋ฏผ์', 'D002', 6000); INSERT INTO EMPLOYEE (EMP_ID, NAME, DEPT_ID, SALARY) VALUES ('E005', '์ ๋ํ', 'D002', 5000); -- 4. ๋ณ๊ฒฝ์ฌํญ ๋ฐ์ COMMIT; -- 4๋ฒ ์ฟผ๋ฆฌ WITH DEPT_AVG AS ( -- 1. ๊ฐ ๋ถ์์ ํ๊ท ์ฐ๋ด ๊ณ์ฐ SELECT DEPT_ID, AVG(SALARY) AS AVG_SAL FROM EMPLOYEE GROUP BY DEPT_ID ) SELECT E.* FROM EMPLOYEE E JOIN DEPT_AVG D ON E.DEPT_ID = D.DEPT_ID WHERE E.SALARY > D.AVG_SAL -- 2. ๋ถ์ ํ๊ท ๋ณด๋ค ๋์ ์ง์๋ง ํํฐ๋ง AND E.SALARY = ( -- 3. ํํฐ๋ง๋ ์ ์ฒด ์ง์ ์ค์์ ์ต์ ์ฐ๋ด์ ์ฐพ์ SELECT MIN(E2.SALARY) FROM EMPLOYEE E2 JOIN DEPT_AVG D2 ON E2.DEPT_ID = D2.DEPT_ID WHERE E2.SALARY > D2.AVG_SAL ); -- 1๋ฒ ์ฟผ๋ฆฌ SELECT E.* FROM EMPLOYEE E WHERE E.SALARY > ( SELECT AVG(SALARY) FROM EMPLOYEE WHERE DEPT_ID = E.DEPT_ID ) AND E.SALARY = ( SELECT MIN(SALARY) FROM EMPLOYEE E2 WHERE E2.SALARY > ( SELECT AVG(SALARY) FROM EMPLOYEE WHERE DEPT_ID = E.DEPT_ID ) ); /* ๊ธฐ๋ ๊ฒฐ๊ณผ: EMP_ID | NAME | DEPT_ID | SALARY -------|------|---------|------- E002 | ๊น์ฒ ์ | D001 | 5500 */
- 0
- 2
- 36
Q&A
๋์ปค ์ค์น ์ค๋ฅ
์๋ ํ์ธ์. ๋ฐ์ฌํ๋.๋์ปค ๊ฐ์ํ์ ๋ฌธ์ ๊ฐ ์์ด์ ๋ต๋ตํ์ จ๊ฒ ๋ค์. ์ ํด๊ฒฐ ๋๋ฉด ์ข๊ฒ ์ต๋๋ค. ์ฐ์ , ์ด๋ฏธ์ง์ ๋ก๊ทธ๋ฅผ ๋ณด๋ ๊ฐ์ํ ์ง์์ด ์๋๋ pc ์ด๊ฑฐ๋, ํน์ ์ค์ ์ด ๊บผ์ ธ ์๋๊ฑฐ ๊ฐ์ต๋๋ค.์ ๊ฐ ๋๋ฆฐ ๊ต์์ ๋ชฉ์ฐจ: 03 ์ค๋ผํด ์ค์น(on ์ปจํ ์ด๋) ๋ฅผ ์ฐธ๊ณ ํ์ ์ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค. (๊ต์ 356 ํ์ด์ง)๊ต์์์ ์๋ดํ๋ ๊ฐ์ด๋๋ ์๋์ ์์๋ก ํ์ธ์ ํ๋๋ก ๋์ด ์์ต๋๋ค. ์ด๋ฏธ์ง๊ฐ ํฌํจ๋์ด ์์ผ๋ ๊ฐ์ด๋์ ๋ฐ๋ผ ์งํํด๋ณด์ญ์์ค. ๊ฐ์ํ ๊ฐ๋ฅ ์ฌ๋ถ ํ์ธ - ์์ ๊ด๋ฆฌ์>์ฑ๋ฅ>๊ฐ์ํ ์ฌ์ฉ ํ์ธ ๊ฐ์ ๋จธ์ ํ๋ซํผ ๊ธฐ๋ฅ ํ์ธ - ์๋์ฐ ๊ธฐ๋ฅ ์ผ๊ธฐ/๋๊ธฐ > ๊ฐ์๋จธ์ ํ๋ซํผ ์ฒดํฌ ์ํ ํ์ธ ๊ทธ๋ฆฌ๊ณ , ํน์ ํ์ธํ๋๋ฐ ๊ฐ์ํ๋ฅผ ์ง์ํ์ง ์๋ pc๊ฑฐ๋, ์ค์ ์์ ์ด ๋๋ฌด ๋ฒ๊ฑฐ๋ฌ์ฐ์๋ค๋ฉด.., livesql์ ์ฌ์ฉํ์๊ธธ ๊ถํด๋๋ฆฝ๋๋ค. livesql.oracle.com ์ ์ ์ํด์ ์ฌ์ฉํ์ค ์๊ฐ ์์ต๋๋ค. ์ฌ์ฉ๋ฐฉ๋ฒ์ ์ ๊ต์(๋ชฉ์ฐจ-05 Live SQL ํ์ฉ (Oracle ๋ฏธ์ค์น), 367ํ์ด์ง)์ ์์ต๋๋ค. livesql์ oracle ์์ ์ ๊ณตํ๋ sql ํ๊ฒฝ์ ๋๋ค. ์ค๋ผํด์ ์ค์นํ์ง ์๊ณ ์ถฉ๋ถํ sqld ์ํ์ค๋น๋ฅผ ํ์ค ์ ์์ต๋๋ค. ๊ทธ๋ผ ์ฒ๋ฆฌํด๋ณด์๊ตฌ์. ์ ์๋๋ฉด ์ง๋ฌธ ๋ค์ ๋จ๊ฒจ์ฃผ์ธ์. ๊ฐ์ฌํฉ๋๋ค.
- 0
- 2
- 31
Q&A
3๊ฐ ๋ ธ๋ญ์ด ๋ฌธ์ SQL ์ค์ต ์คํฌ๋ฆฝํธ ๋ค์ด๋ก๋ ํ์ผ ์ค๋ฅ
์๋ ํ์ธ์. sniperkdw ๋. ์๋ ค์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์์ถ๋ ํ์ผ์ ์ฝ๊ฐ์ ๋ฌธ์ ๊ฐ ์์๋ค์. (์ฐธ, ์ด์ํ๋ค์.. ๐ ) ๋ค์ ์์ถํด์ ์ฌ๋ ค๋์์ต๋๋ค. ๋ค์ด๋ก๋ ๋ฐ์์ ์ด์์ด ์๋ ๊ฒ์ ํ์ธํ์ด์. ํน์ ๋ค์ด๋ก๋ ๋ฐ์ผ์ ํ ์ด์์ด ์์ผ๋ฉด ๋ฒ๊ฑฐ๋ก์ฐ์๊ฒ ์ง๋ง, ๋ค์ ๋ฉ์ธ์ง ๋จ๊ฒจ์ฃผ์๊ธธ ๋ถํ ๋๋ฆด๊ฒ์. ๊ฐ์ฌํฉ๋๋ค.
- 0
- 1
- 47
Q&A
๋ ธ๋ญ์ด ๊ธฐ์ถ
์๋ ํ์ธ์. dussud159 ๋. ์ด ๊ฐ์๋ ๋ ธ๋ญ์ด ๋ฌธ์ ํ์ด ๊ฐ์์ ๋ค๋ฅธ ๋ด์ฉ์ ๋๋ค. ๋ ธ๋ญ์ด ๋ฌธ์ ๋ ๋์ด๋๊ฐ ๋์ ๊ฒ๋ค์ด ๋ง๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ณธ ๋ด์ฉ์ ๋ชจ๋ฅด๊ณ ๋ ํ๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค. ๊ธฐ๋ณธ ๋ด์ฉ์ ์๋ ค์ฃผ๋ ๊ฐ์๊ฐ ์ด ๊ฐ์์ ๋๋ค. ํน์ ๊ฐ์ ๋ด์ฉ์ ์คํดํ์ จ์๊น ์ผ๋ ค๋๋ค์. ๊ด์ฐฎ์ผ์๋ฉด leader.bettermind@gmail.com ์ผ๋ก ๋ฉ์ผ ํ ํต์ฃผ์ธ์. ๋์์ ๋๋ฆด ๋ฐฉ๋ฒ์ ์ฐพ์๋ณด๊ฒ ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
- 0
- 2
- 38
Q&A
์ค์ ๋ฌธ์ 2ํ์ฐจ 24๋ฒ๋ฌธ์
์๋ ํ์ธ์. kokodae.ko ๋. ์ง๋ฌธ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ง๋ฌธ์ ๋ต์ ๋๋ฆฌ์๋ฉด.. 24๋ฒ ๋ฌธ์ ๋ ์๋์ ๊ฐ๊ณ , ๋ฌธ์ ์์ ์๊ตฌํ๋ ๊ฒ์ '์ฐ์๋ 3์ผ ์ด์' ์ ๋๋ค.24. ์๋์ ํ ์ด๋ธ์์ ์ฐ์๋ 3์ผ ์ด์ ๊ฒฐ์ ๊ธ์ก์ด 10๋ง์์ ์ด๊ณผํ ๊ณ ๊ฐ์ ์ฐพ์ผ๋ ค๊ณ ํ๋ค. ๊ฐ์ฅ ์ ์ ํ SQL๋ฌธ์? ๋ฌธ์ ์์ ์๊ตฌํ๋ '3์ผ ์ด์' ์ด๋ผ๋ ๊ธฐ์ค์ผ๋ก ์ ๋ต์ ์ฐพ์ผ๋ฉด 3๋ฒ์ ๋๋ค. ๋ณด๊ธฐ 1๋ฒ์ 3์ผ '์ด์' ์ด๋ผ๋ ๊ธฐ์ค์ ์ถฉ์กฑํ๊ธฐ ์ด๋ ต์ต๋๋ค. ์์ฑ๋ ์ฟผ๋ฆฌ๋ ์ ํํ 3์ผ์ ๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๊ฒ ๋์ด ์์ต๋๋ค. ๋ณด๊ธฐ 3๋ฒ์ 3์ผ ์ด์์ด๋ผ๋ ์กฐ๊ฑด์ ์ถฉ์กฑํฉ๋๋ค. ๋ฌผ๋ก ์ ์๋ ๋ฐ์ดํฐ๋ง ๊ฐ์ง๊ณ ๋ณด๋ฉด, 1๋ฒ๋ ๋ต์ด ๋ง๋ ๊ฒ ๊ฐ๋ค๊ณ ํ ์ ์์ต๋๋ค. ํ์ง๋ง ๋ฌธ์ ๋ ๊ฐ์ฅ ์ ์ ํ ๊ฒ์ ์ฐพ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋ณด๊ธฐ ์ค์์ ๊ฐ์ฅ ์ ์ ํ ๊ฒ์ ์ ํํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์๋๋ 24๋ฒ ๋ฌธ์ ์ ์ค์ต ๋ฐ์ดํฐ์ ์ฟผ๋ฆฌ์ ๋๋ค. ๋ฌธ์ ์์ ์ ์๋ ๋ฐ์ดํฐ ์ธ์ ์ถ๊ฐ๋ก ๋ช ๊ฑด์ ๋ ์ ๋ ฅํฉ๋๋ค. ์ค์ต ํด๋ณด์๋ฉด, ์ดํด๊ฐ ๋ ์ ๋์ค ๊ฒ๋๋ค. CREATE TABLE PAYMENT ( CUSTOMER_ID VARCHAR(10) NOT NULL, PAYMENT_DATE DATE NOT NULL, AMOUNT INT NOT NULL, PRIMARY KEY (CUSTOMER_ID, PAYMENT_DATE) ); INSERT INTO PAYMENT (CUSTOMER_ID, PAYMENT_DATE, AMOUNT) VALUES ('A001', DATE '2024-01-01', 120000), ('A001', DATE '2024-01-02', 150000), ('A001', DATE '2024-01-03', 130000), -- A001์ 3์ผ ์ฐ์ (1/1~1/3) ์กฐ๊ฑด์ ๋ง์กฑ ('A001', DATE '2024-01-04', 80000), -- 10๋ง์ ์ดํ๋ก ์ฐ์ ์ข ๋ฃ ('A002', DATE '2024-01-01', 110000), ('A002', DATE '2024-01-02', 90000), -- 10๋ง์ ์ดํ๋ก ์ฐ์ ์คํจ ('A002', DATE '2024-01-03', 120000), ('A003', DATE '2024-01-05', 110000), ('A003', DATE '2024-01-07', 120000), -- 1์ผ์ฉ ๊ฐ๊ฒฉ์ด ์์ด ์ฐ์ ์คํจ ('A003', DATE '2024-01-09', 130000), ('A004', DATE '2024-02-10', 105000), ('A004', DATE '2024-02-11', 106000), ('A004', DATE '2024-02-12', 107000), ('A004', DATE '2024-02-13', 108000); -- A004๋ 4์ผ ์ฐ์ (1/10~1/13) ์กฐ๊ฑด์ ๋ง์กฑ -- DBMS์ ๋ฐ๋ผ DATE 'YYYY-MM-DD' ํ์์ด ์ง์๋์ง ์์ ๊ฒฝ์ฐ TO_DATE('YYYY-MM-DD', 'YYYY-MM-DD') ๋ฑ์ ์ฌ์ฉํด์ผ ํ ์ ์์ต๋๋ค. -- 1๋ฒ ๋ณด๊ธฐ : ์ ํํ๊ฒ 3์ผ๊ฐ 10๋ง ์ด์์ธ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์. ๋ฌธ์ ์์๋ 3์ผ ์ด์์ ์๊ตฌํ๊ณ ์์ SELECT DISTINCT P1.CUSTOMER_ID FROM PAYMENT P1 JOIN PAYMENT P2 ON P1.CUSTOMER_ID = P2.CUSTOMER_ID JOIN PAYMENT P3 ON P2.CUSTOMER_ID = P3.CUSTOMER_ID WHERE P2.PAYMENT_DATE = P1.PAYMENT_DATE + 1 AND P3.PAYMENT_DATE = P2.PAYMENT_DATE + 1 AND P1.AMOUNT > 100000 AND P2.AMOUNT > 100000 AND P3.AMOUNT > 100000; -- 2๋ฒ ๋ณด๊ธฐ : 10๋ง ์ด์์ธ ๊ณ ๊ฐ ์ค ๊ฑฐ๋๊ฐ 3๊ฑด ์ด์์ธ ๊ณ ๊ฐ ์์ด๋๋ฅผ ๋ฐํํจ SELECT CUSTOMER_ID FROM PAYMENT WHERE AMOUNT > 100000 GROUP BY CUSTOMER_ID HAVING COUNT(*) >= 3; -- 3๋ฒ : ์ฐ์๋ ๋ ์ง๋ฅผ ๊ทธ๋ฃนํ ํ๋ '์ฐจ์ด ๋ถ์ ๊ธฐ๋ฒ' ๋ฐฉ์ -- With ๋ด๋ถ์ Select ๊ตฌ๋ฌธ์ ์คํํ๋ฉด, ์ฐ์๋ ๋ ์ง์ธ ๊ฒฝ์ฐ ๋์ผํ GRP ๋ ์ง๊ฐ ์๊น๋๋ค. ์ฐ์๋์ง ์์ ๊ฒฝ์ฐ ๋์ผํ GRP ๋ ์ง๊ฐ ์๊ธฐ์ง ์๊ณ ์. WITH CONSECUTIVE_DAYS AS ( SELECT CUSTOMER_ID, PAYMENT_DATE, AMOUNT, ROW_NUMBER() OVER (PARTITION BY CUSTOMER_ID ORDER BY PAYMENT_DATE) AS RN, PAYMENT_DATE - ROW_NUMBER() OVER (PARTITION BY CUSTOMER_ID ORDER BY PAYMENT_DATE) AS GRP FROM PAYMENT WHERE AMOUNT > 100000 ) SELECT DISTINCT CUSTOMER_ID FROM ( SELECT CUSTOMER_ID, GRP, COUNT(*) AS CNT FROM CONSECUTIVE_DAYS GROUP BY CUSTOMER_ID, GRP HAVING COUNT(*) >= 3 ); -- 4๋ฒ: 3์ผ ์ด์ ์ฐ์ ์กฐ๊ฑด์ ํ์ธํ๊ธฐ ์ด๋ ค์. ๊ธ์ก์ด 10๋ง ์ด์์ธ ๊ฒ ๊ธฐ์ค์ผ๋ก ์กฐํ SELECT DISTINCT CUSTOMER_ID FROM ( SELECT CUSTOMER_ID, AMOUNT, LAG(AMOUNT, 1) OVER (PARTITION BY CUSTOMER_ID ORDER BY PAYMENT_DATE) AS PREV_AMOUNT, LAG(AMOUNT, 2) OVER (PARTITION BY CUSTOMER_ID ORDER BY PAYMENT_DATE) AS PREV2_AMOUNT FROM PAYMENT )์ผ WHERE AMOUNT > 100000 AND PREV_AMOUNT > 100000 AND PREV2_AMOUNT > 100000;
- 0
- 2
- 32
Q&A
์ค์ ๋ฌธ์ 3ํ 41๋ฒ๋ฌธ์
์๋ ํ์ธ์. kokodae.ko ๋. ์ง๋ฌธ ๋จ๊ฒจ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ด ๋ฌธ์ ๋ ๊ฐ์ฅ ์ ์ ํ sql ์ ์ฐพ๋ ๋ฌธ์ ์ ๋๋ค. ๋ง์ํ์ ๊ฒ ์ฒ๋ผ ๋ณด๊ธฐ 1, 3์ ํด๋น ๋ฐ์ดํฐ ๋ด์์๋ ๋์ผํ ๊ฒฐ๊ณผ๊ฐ ๋์ต๋๋ค. ํ์ง๋ง 3๋ฒ ๊ฐ์ ๊ฒฝ์ฐ, Lag ์ 4 ๋ผ๋ ๊ฐ์ ํ๋์ฝ๋ฉ ํด๋์๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๊ฐ ๋๋ฝ๋ ๊ฒฝ์ฐ์๋ ์์ ํ ์ ๋ชป๋ ๊ฐ์ ์ถ๋ ฅํ๊ฒ ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด ํ ๊ฐ ์ฟผํฐ์ ๊ฐ์ด ์๋ ๊ฒฝ์ฐ์๋ 4๊ฐ ์ด์ ์ ๊ฐ์ ๊ฐ์ง๊ณ ๊ณ์ฐ์ ํ๊ฒ ๋ฉ๋๋ค. ๊ทธ๋์ ๊ฐ์ฅ ์ ์ ํ sql์ 1๋ฒ์ผ๋ก ์ ํํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๋ฌผ๋ก ์ค์ ์ํ์์๋ ์ด๋ฐ ๊ฒฝ์ฐ๊ฐ ์์ ์ ์์ต๋๋ค. ์ค์ ๋ก ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ต์ ์ ํํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ 3๋ฒ์ด ์ ๋ต์ด๋ผ๊ณ ์ด์๋ฅผ ์ ๊ธฐํ ์ ์์ต๋๋ค. (์ด๋ฐ ๊ฒฝ์ฐ๊ฐ ์ข ์ข ์กด์ฌํฉ๋๋ค) ์ด์๋ฅผ ์ ๊ธฐํด์ ์ ์๋ฅผ ๋ฐ์ ์๋ ์๊ฒ ์ง๋ง ๋ฆฌ์คํฌ ๊ด๋ฆฌ์ฐจ์์์ 1๋ฒ ๋ณด๊ธฐ๋ฅผ ์ ํํ๋ ๊ฒ ๋ ์ข์ ๊ฒ ๊ฐ์ต๋๋ค. ์๋, ์ฐธ๊ณ ํ์๋ผ๊ณ ์ค์ต ์คํฌ๋ฆฝํธ๋ฅผ ๋จ๊ฒจ๋๋ฆฝ๋๋ค. ์ด๋ฏธ ์ค์ต์ ํด๋ณด์ ๊ฒ ๊ฐ์ง๋ง, ์ฐธ๊ณ ํ์ญ์์ค. ๊ฐ์ฌํฉ๋๋ค. -- SALES ํ ์ด๋ธ ์์ฑCREATE TABLE SALES ( YEAR INT, QUARTER INT, AMOUNT DECIMAL(10, 0));-- ์์ ๋ฐ์ดํฐ ์ฝ์ INSERT INTO SALES (YEAR, QUARTER, AMOUNT) VALUES (2023, 1, 1000);INSERT INTO SALES (YEAR, QUARTER, AMOUNT) VALUES (2023, 2, 1200);INSERT INTO SALES (YEAR, QUARTER, AMOUNT) VALUES (2023, 3, 1500);INSERT INTO SALES (YEAR, QUARTER, AMOUNT) VALUES (2023, 4, 1800);INSERT INTO SALES (YEAR, QUARTER, AMOUNT) VALUES (2024, 1, 1300);INSERT INTO SALES (YEAR, QUARTER, AMOUNT) VALUES (2024, 2, 1400);-- ์ถ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ์ฌ 2024๋ 3๋ถ๊ธฐ/4๋ถ๊ธฐ YoY ๋น๊ต๊ฐ ๊ฐ๋ฅํ๋๋ก ํฉ๋๋ค.INSERT INTO SALES (YEAR, QUARTER, AMOUNT) VALUES (2024, 3, 1700);INSERT INTO SALES (YEAR, QUARTER, AMOUNT) VALUES (2024, 4, 2000);commit; -- ๋ณด๊ธฐ1 SELECT YEAR, QUARTER, AMOUNT, LAG(AMOUNT) OVER (PARTITION BY QUARTER ORDER BY YEAR) as PREV_AMOUNT, ROUND((AMOUNT - LAG(AMOUNT) OVER (PARTITION BY QUARTER ORDER BY YEAR)) / LAG(AMOUNT) OVER (PARTITION BY QUARTER ORDER BY YEAR) * 100, 2) as GROWTH_RATEFROM SALES;-- ๋ณด๊ธฐ2SELECT YEAR, QUARTER, AMOUNT, LAG(AMOUNT) OVER (ORDER BY YEAR, QUARTER) as PREV_AMOUNT, ROUND((AMOUNT - LAG(AMOUNT) OVER (ORDER BY YEAR, QUARTER)) / LAG(AMOUNT) OVER (ORDER BY YEAR, QUARTER) * 100, 2) as GROWTH_RATEFROM SALES;-- ๋ณด๊ธฐ3SELECT YEAR, QUARTER, AMOUNT, LAG(AMOUNT, 4) OVER (ORDER BY YEAR, QUARTER) as PREV_AMOUNT, ROUND((AMOUNT - LAG(AMOUNT, 4) OVER (ORDER BY YEAR, QUARTER)) / LAG(AMOUNT, 4) OVER (ORDER BY YEAR, QUARTER) * 100, 2) as GROWTH_RATEFROM SALES;-- ๋ณด๊ธฐ4SELECT YEAR, QUARTER, AMOUNT, FIRST_VALUE(AMOUNT) OVER (PARTITION BY QUARTER ORDER BY YEAR) as PREV_AMOUNT, ROUND((AMOUNT - FIRST_VALUE(AMOUNT) OVER (PARTITION BY QUARTER ORDER BY YEAR)) / FIRST_VALUE(AMOUNT) OVER (PARTITION BY QUARTER ORDER BY YEAR) * 100, 2) as GROWTH_RATEFROM SALES;
- 0
- 2
- 38
Q&A
์ค์ ๋ฌธ์ 3ํ์ฐจ 18๋ฒ
์๋ ํ์ธ์. ์ง๋ฌธ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๋ด์ฉ ์ดํด๋ดค์ต๋๋ค. ๋ฌธ์ ์ ๋ณด๊ธฐ๋ฅผ ์์ฑํ ๋ ์ค์๊ฐ ์์์ต๋๋ค. 18๋ฒ ๋ฌธ์ ์ ์ ๋ต์ 1, 3๋ฒ์ด ๋ชจ๋ ํด๋น ํ๋ ๊ฒ์ด ๋ง์ต๋๋ค. ์๋ AI ์ธํด์ด ๋จ๊ธด ๋ต์ 1, 3๋ฒ ๋ณด๊ธฐ์ ์ฟผ๋ฆฌ๊ฐ ๋ชจ๋ ์ค๋ณต ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌํดํ๊ธฐ ๋๋ฌธ์ ๋ถ์ ํํฉ๋๋ค. ์ค์๋ฅผ ์๋ ค์ฃผ์ ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ์ฐธ๊ณ ๋ก ์๋์ ์ฟผ๋ฆฌ ์ค์ต์ ํ ์ ์๋๋ก ์คํฌ๋ฆฝํธ๋ฅผ ๋จ๊น๋๋ค. ๋ฌธ์ ๋ ์ ๋ฐ์ดํธ ํด์ ๋ค์ ์ฌ๋ ค๋์์ต๋๋ค. ๊ฐ์ฌ๋๋ฆฝ๋๋ค. -- EMPLOYEE ํ ์ด๋ธ ์์ฑCREATE TABLE EMPLOYEE ( EMP_ID INT PRIMARY KEY, NAME VARCHAR(50), DEPT_ID INT, SALARY INT);-- ๋ฐ์ดํฐ ์ฝ์ INSERT INTO EMPLOYEE (EMP_ID, NAME, DEPT_ID, SALARY) VALUES (100, '๊น์ฒ ์', 10, 5000);INSERT INTO EMPLOYEE (EMP_ID, NAME, DEPT_ID, SALARY) VALUES (200, '์ด์ํฌ', 10, 4000);INSERT INTO EMPLOYEE (EMP_ID, NAME, DEPT_ID, SALARY) VALUES (300, '๋ฐ๋ฏผ์', 20, 4500);INSERT INTO EMPLOYEE (EMP_ID, NAME, DEPT_ID, SALARY) VALUES (400, '์ต์ข ํธ', 20, 5500);-- ํ ์ด๋ธ ์ ์ฒด ํ์ธ (์ ํ ์ฌํญ)SELECT * FROM EMPLOYEE;commit; SELECT * FROM EMPLOYEE WHERE (DEPT_ID, SALARY) IN ( -- ๊ฐ ๋ถ์๋ณ ์ต๋ ๊ธ์ฌ์ ๋ถ์ ID๋ฅผ ์กฐํ SELECT DEPT_ID, MAX(SALARY) FROM EMPLOYEE GROUP BY DEPT_ID);SELECT * FROM EMPLOYEE E WHERE SALARY = ( -- ์ง์ E์ ๋ถ์(E.DEPT_ID) ๋ด์์ ์ต๋ ๊ธ์ฌ๋ฅผ ์กฐํ SELECT MAX(SALARY) FROM EMPLOYEE WHERE DEPT_ID = E.DEPT_ID);
- 0
- 2
- 36
Q&A
SQLD ์๊ฒฉ์ฆ
์๋ ํ์ธ์. spb03240๋. ์ง๋ฌธ ๋จ๊ฒจ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. SQL์ ๊ณต๋ถํ๋ฉด ๋ฐ์ดํฐ๋ฅผ ์ดํดํ๊ณ ๋ค๋ฃฐ ์ ์๋ ๊ธฐ๋ณธ์ ์ธ ์ญ๋์ ํฅ์ ์ํฌ ์ ์์ต๋๋ค. ๋น ๋ฐ์ดํฐ ๋ถ์ ์ค๋ฌด์๋ ๋น์ฐํ ๋์์ด ๋๊ณ ํ์์ ์ ๋ค. ํ์ง๋ง ์๊ฒฉ์ฆ ํ๋์ ๋ชฉ์ ์ผ๋ก ํ ๊ฒฝ์ฐ๋ ์ข ๋ค๋ฆ ๋๋ค. ๋น ๋ฐ์ดํฐ ๋ถ์๊ธฐ์ฌ๋ฅผ ํ๋ํ๊ธฐ ์ํด์ SQL์ ๊ณต๋ถํ๋ ๊ฒ์ด ํ์์ ์ด์ง๋ ์๊ณ ์ํ ๋ฒ์๊ฐ ๊ฒน์น์ง๋ ์์ต๋๋ค. ๋ฌผ๋ก ADsP ์ฒ๋ผ SQL ๋ฌธ์ ๊ฐ ๊ฐํน ๋์ฌ ์๋ ์๊ฒ ์ง๋ง ๋์ค๋๋ผ๋ ํ ๋ ๋ฌธ์ ๋ผ ๋น๋ฝ์ ์ํฅ์ ์ค ์ ๋๋ ์๋๊ฑฐ๋ผ ์ง์ํฉ๋๋ค. ์ง๋ฌธ์๋๊ป์ ์๊ฒฉ์ฆ ํ๋์ ๋์ ๋น์ค์ ๋๋ค๋ฉด ๋น ๋ฐ์ดํฐ ๋ถ์์ ๋ฐ๋ก ๋์ ํ์๋ ๊ฑธ ๊ถํด๋๋ฆฌ๊ตฌ์. ๋ฐ์ดํฐ ๊ด๋ จ ๋ถ์ผ์ ์ง์ ์ ๊ตฌํ์ค ๊ณํ์ด๋ผ๋ฉด SQL์ ๊ผญ ๊ณต๋ถํ์ ์ ์๊ฒฉ์ฆ๋ ํ๋ํ์๊ธธ ๊ถํด๋๋ฆฝ๋๋ค. ์ฐธ๊ณ ๋ก ์ ๋ SQL๊ณผ ๋น ๋ฐ์ดํฐ ๋ถ์์ ๋ํ ์ค๋ฌด์ ๊ฐ์๋ฅผ ๋ชจ๋ ํ๊ณ ์๋ค๋ ๊ฑธ ์๋ ค๋๋ฆฝ๋๋ค. ๊ทธ๋ผ ๋์์ด ๋์ จ์ผ๋ฉด ์ข๊ฒ ๊ตฌ์. ํ๋ณตํ ๋ ๋ค ๋ณด๋ด์ญ์์ค. ๊ฐ์ฌํฉ๋๋ค.
- 0
- 1
- 48
Q&A
๊ณ์ธตํ ์ง์ ์ง๋ฌธ์ ๋๋ค.
์๋ ํ์ธ์. ์ง๋ฌธ์ ์๋์ ๊ฐ์ด ๋ต๋ณ ๋๋ฆฝ๋๋ค. ๋ต๋ณ์ด ๋์์ด ๋์์ผ๋ฉด ์ข๊ฒ ๋ค์. ๊ฐ์ฌํฉ๋๋ค. ๋ค๋ฅธ ๊ฐ์์์ Prior ์์ = ๋ถ๋ชจ๊ฐ ์๋ฐฉํฅ์ด๋ผ๊ณ ํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ ๋ณด๋ค์. ์ ๊ฐ, ํด๋น ๊ฐ์๋ฅผ ๋ฃ์ง ์์๊ธฐ ๋๋ฌธ์ ๋ญ๋ผ๊ณ ๋ง์๋๋ฆฌ๊ธฐ๋ ์ด๋ ค์ธ ๊ฑฐ ๊ฐ์ต๋๋ค.. ์ผ๋ฐ์ ์ผ๋ก ์ค๋ช ํ์๋ฉด, Prior ๋ผ๋ ํค์๋๋ ์ด์ ํ์ ์๋ฏธํฉ๋๋ค. ๋ง์ฝ Prior empno = mgr (Prior ๋ถ๋ชจ = ์์)๊ณผ ๊ฐ์ด ์์ฑํ๋ฉด, ์ด์ ํ์ ์ฌ์ ๋ฒํธ์ ํ์ฌ ํ์ ๋งค๋์ ๋ฒํธ๊ฐ ๋์ผํ ๊ฐ์ ์ฐพ๋ ๋ฐฉ์์ผ๋ก ์ ๊ฐํฉ๋๋ค. ์ด๋ ์๋ฐฉํฅ์ ๋๋ค. ์ด๋ ์์์ ์ Start with mgr is null๋ก ํํํฉ๋๋ค. ์๋ํ๋ฉด ์ต์์ ๋งค๋์ ๋ฒํธ์์ ์๋ ์ชฝ์ผ๋ก ์ฐพ์ ๋๊ฐ๊ธฐ ๋๋ฌธ์ ๋๋ค.์ฌ๊ธฐ์ ์ฌ์๋ฒํธ๋ ๋ถ๋ชจ ์นผ๋ผ์ด๊ณ ๋งค๋์ ๋ฒํธ๋ ์์ ์นผ๋ผ์ ๋๋ค. ์ฌ์๋ฒํธ(๋ถ๋ชจ ์นผ๋ผ)๋ ์ฃผ์๋ณ์(PK) ์ด๊ณ ๋งค๋์ ๋ฒํธ(์์ ์นผ๋ผ)๋ ์ธ๋์ฐธ์กฐํค(FK) ์ฃ . Emp ํ ์ด๋ธ์ ์๊ธฐ ์ฐธ์กฐ ๊ด๊ณ๋ฅผ ๊ฐ์ง ์ํฐํฐ์ ๋๋ค. ์๊ธฐ ์ค์ค๋ก ๋ถ๋ชจ ์์ ๊ด๊ณ๋ฅผ ๊ฐ์ง ์ํฐํฐ์ธ๊ฑฐ์ฃ . Prior ๋ถ๋ชจ = ์์ ์ด๋ผ๋ ๋ง์ ์๋ฐํ๊ฒ ๋งํ์๋ฉด Prior ๋ถ๋ชจ ์นผ๋ผ = ์์ ์นผ๋ผ์ ๋๋ค. ํ์ด์ ๋งํ์๋ฉด ์ด์ ํ์ ๋ถ๋ชจ ์นผ๋ผ๊ณผ ํ์ฌ ํ์ ์์ ์นผ๋ผ์ด ์ผ์นํ๋ ๊ฒฝ์ฐ์ด์ฃ .๋ง์ฝ Prior mgr = empno (Prior ์์ = ๋ถ๋ชจ)์ ๊ฐ์ด ์ฐพ์๊ฐ ๊ฒฝ์ฐ ์ญ๋ฐฉํฅ ์ ๊ฐ์ ๋๋ค. ์ด๋ ์์์ ์ ํน์ ์ง์ (ex.start with ename = 'SMITH')์ ์ ํํฉ๋๋ค. ์๋ํ๋ฉด ํน์ ํ์์ ๋ถํฐ ์์๋ก ์ฐพ์๋๊ฐ๋ ๋ฐฉ์์ผ๋ก ์ด์ ํ์ ๋งค๋์ ๋ฒํธ์ ํ์ฌ ํ์ ์ฌ์๋ฒํธ๊ฐ ๋์ผํ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ฐพ๊ธฐ ๋๋ฌธ์ ๋๋ค.์๋ฐฉํฅ ์ญ๋ฐฉํฅ์ ๋จ์ํ Prior ํค์๋๋ก ํ๋จํ๊ธฐ๋ ์ด๋ ต์ต๋๋ค. Start with ๊ตฌ๋ฌธ์ ์์์ ์ ๋ณด๊ณ ํจ๊ป ํ๋จํด์ผ ํฉ๋๋ค. ๋ํ Prior ํค์๋๋ ์ด์ ํ์ ์๋ฏธํ๋ค๋ ์ , ๊ทธ๋ฆฌ๊ณ ๊ณ์ธตํ ์ฟผ๋ฆฌ์์ ์ฌ์ฉํ๋ ๋ถ๋ชจ ์์์ด๋ ์๊ธฐ ์ฐธ์กฐ ๊ด๊ณ์ ์๋ ์ํฐํฐ์ ๋ถ๋ชจ ์นผ๋ผ๊ณผ ์์ ์นผ๋ผ์ ์๋ฏธํ๋ค๋ ์ ์ ๊ธฐ์ตํ๊ณ ์๋ฐฉํฅ ์ญ๋ฐฉํฅ์ ํ๋จํด์ผ ํฉ๋๋ค. ๋ ธ๋ญ์ด ๋ฌธ์ ์ง์ 63๋ฒ ๋ฌธ์ ๋ณด๊ธฐ 4๋ฒ์ 2๊ตฐ๋ฐ๊ฐ ์๋ชป๋์ด ์์ต๋๋ค. ๋ณด๊ธฐ 4๋ฒ: โฃ ์ค๋ผํด์ ๊ณ์ธตํ ์ง์๋ฌธ์์ PRIOR ํค์๋๋ CONNECT BY ์ ์์๋ง ์ฌ์ฉ๋ ์ ์์ผ๋ฉฐ, PRIOR ์์ = ๋ถ๋ชจ ํํ๋ก ์ฌ์ฉํ๋ฉด ์๋ฐฉํฅ ์ ๊ฐ๋ก ์ํ๋๋ค.1) ์ฒซ ๋ฒ์งธ ์๋ชป๋ ๋ถ๋ถ์ 'Prior ํค์๋๊ฐ Connect By ์ ์์๋ง' ์ฌ์ฉ๋ ์ ์๋ค๊ณ ํ ๋ถ๋ถ์ ๋๋ค. Prior ํค์๋๋ Select ์ ์์๋ ์ฌ์ฉ๋ ์ ์์ต๋๋ค. ์ด๋ Prior ํค์๋๋ ํ์ฌ ํ์ ๋ถ๋ชจ(์ด์ ) ํ์ ๊ฐ์ ๊ฐ์ ธ์ค๋ ์ฉ๋๋ก ์ฌ์ฉํฉ๋๋ค. ๋ ธ๋ญ์ด ํด์ค์ง์๋ ์ด ๋ถ๋ถ์ ๋ํ ์ค๋ช ๋ง ์ ๊ณตํ๊ณ ์์ต๋๋ค. 2) ๋ ๋ฒ์งธ ์๋ชป๋ ๋ถ๋ถ์ 'Prior ์์ = ๋ถ๋ชจ ํํ๋ก ์ฌ์ฉํ๋ฉด ์๋ฐฉํฅ ์ ๊ฐ๋ก ์ํ๋๋ค' ๋ผ๊ณ ํ ๊ฒ์ ๋๋ค. ์๋ฐฉํฅ์ Prior ๋ถ๋ชจ = ์์์ ๋๋ค. ์ด์ ํ์ ๋ถ๋ชจ ์นผ๋ผ์ ๊ธฐ์ค์ผ๋ก ์์์ ์ฐพ์๋๊ฐ๊ธฐ ๋๋ฌธ์ ์๋ฐฉํฅ์ ๋๋ค. ์ญ๋ฐฉํฅ์ Prior ์์ = ๋ถ๋ชจ์ ๋๋ค. ์ด์ ํ์ ์์ ์นผ๋ผ์ ๊ธฐ์ค์ผ๋ก ๋ถ๋ชจ๋ฅผ ์ฐพ์๋๊ฐ๊ธฐ ๋๋ฌธ์ ์ญ๋ฐฉํฅ์ ๋๋ค. (๋ ธ๋ญ์ด์์๋ Prior ํค์๋๋ง ๊ฐ์ง๊ณ ์๋ฐฉํฅ, ์ญ๋ฐฉํฅ์ ์๊ธฐ๊ฐ ์ด๋ ต๊ธฐ ๋๋ฌธ์ ์ 1)๋ฒ๋ง ์ค๋ช ํ๊ฒ ์๋๊ฐ ์ง์์ ํด๋ด ๋๋ค.. )์ฐธ๊ณ ๋ก.. ์ 1๋ฒ๊ณผ 2๋ฒ์ ํ์ธํ ์ ์๋ ์ฟผ๋ฆฌ๋ฅผ ์๋์ ์์ฑํด๋์์ต๋๋ค.-- ์๋ฐฉํฅ ์ ๊ฐ SELECT LEVEL,LPAD(' ', (LEVEL-1)*4) || ENAME AS "์ง์๋ช ",EMPNO,MGR,-- (1) ํ์ฌ ํ์ ์์ฌ(๋ถ๋ชจ)์ ENAME ๊ฐ์ ๊ฐ์ ธ์ต๋๋ค.PRIOR ENAME AS "์ง์_์์ฌ๋ช "FROMEMP START WITH MGR IS NULL -- ์ต์์(๋ฃจํธ)๋ MGR์ด NULL์ธ KINGCONNECT BY PRIOR EMPNO = MGR; -- ์๋ฐฉํฅ ์ ๊ฐ (๋ถ๋ชจ ์นผ๋ผ EMPNO = ์์ ์นผ๋ผ MGR); - ์ํ ๊ฒฐ๊ณผ (์ฌ์ง)-- ์ญ๋ฐฉํฅ ์ ๊ฐ SELECT LEVEL,LPAD(' ', (LEVEL-1)*3) || ENAME AS ์กฐ์ง๋,EMPNO,MGRFROM EMP START WITH ENAME = 'SMITH' -- SMITH๋ฅผ ์ตํ์ ๋ ธ๋๋ก ์ง์ (LEVEL 1)CONNECT BY PRIOR MGR = EMPNO -- ์ญ๋ฐฉํฅ ์ ๊ฐ (์์ ์นผ๋ผ MGR = ๋ถ๋ชจ ์นผ๋ผ EMPNO). ์์ ์นผ๋ผ(MGR)์ ๊ธฐ์ค์ผ๋ก ๋ถ๋ชจ ์นผ๋ผ(EMPNO)๋ฅผ ์ฐพ์ผ๋ฉฐ ์๋ก ์ ๊ฐ (์ญ๋ฐฉํฅ)ORDER SIBLINGS BY EMPNO;- ์ํ ๊ฒฐ๊ณผ (์ฌ์ง)emp ํ ์ด๋ธ ๋ฐ์ดํฐ๋ ์๋ ๋งํฌ์์ ํ์ธํ์๋ฉด ๋๊ฒ ์ต๋๋ค.https://java7.tistory.com/164
- 1
- 2
- 40




