๐๊ณผ๋ชฉII. ์ 2์ฅ SQL ํ์ฉ - ์ฐ์ต๋ฌธ์ (์ด 10๋ฌธ์ )
๋ฌธ์ 1. ์ผ๋ฐ์ ์ผ๋ก FROM ์ ์ ์ ์๋ ํ ๋จผ์ ์ํ๋ผ, SQL ๋ฌธ์ฅ ๋ด์์ ์ ์ฐจ์ฑ์ ์ฃผ๋ ํจ๊ณผ๋ฅผ ๋ณผ ์ ์๋ ๊ฒ์ ์ด๋ค ์ ํ์ ์๋ธ ์ฟผ๋ฆฌ ๋ฌธ์ฅ์ธ๊ฐ? ์ ๋ตํ์ธ๐ผ
1) SCALAR SUBQUERY 2) NESTED SUBQUERY 3) CORRELATED SUBQUERY 4) INLINE VIEW |
๋ฌธ์ 2. ๋ค์ ์๋ธ ์ฟผ๋ฆฌ์ ๋ํ ์ค๋ช ์ค ํ๋ฆฐ ๊ฒ์ ๊ณ ๋ฅด์์ค. ์ ๋ตํ์ธ๐ผ
1) ๋ค์ค ํ ์ฐ์ฐ์๋ IN, ANY, ALL์ด ์์ผ๋ฉฐ, ์๋ธ ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ๋ก ํ๋ ์ด์์ ๋ฐ์ดํฐ๊ฐ RETURN๋๋ ์๋ธ ์ฟผ๋ฆฌ๋ค. 2) Top N ์๋ธ ์ฟผ๋ฆฌ๋ INLINE VIEW์ ์ ๋ ฌ๋ ๋ฐ์ดํฐ๋ฅผ ROWNUM์ ์ด์ฉํด ๊ฒฐ๊ณผ ํ์๋ฅผ ์ ํํ๊ฑฐ๋,TOP(N) ์กฐ๊ฑด์ ์ฌ์ฉํ๋ ์๋ธ ์ฟผ๋ฆฌ๋ค. 3) INLINE VIEW๋ FROM ์ ์ ์ฌ์ฉ๋๋ ์๋ธ ์ฟผ๋ฆฌ๋ก์ ์ค์ง์ ์ธ OBJECT๋ ์๋์ง๋ง, SQL ๋ฌธ์ฅ์์ ๋ง์น VIEW๋ ํ ์ด๋ธ์ฒ๋ผ ์ฌ์ฉ๋๋ ์๋ธ ์ฟผ๋ฆฌ๋ค. 4) ์ํธ์ฐ๊ด ์๋ธ ์ฟผ๋ฆฌ๋ ์ฒ๋ฆฌ ์๋๊ฐ ๊ฐ์ฅ ๋น ๋ฅด๋ฏ๋ก ์ต๋ํ ํ์ฉํ๋ ๊ฒ์ด ์ข๋ค. |
๋ฌธ์ 3. ๋ค์ SET ์ฐ์ฐ์์ ๋ํ ์ค๋ช ์ค ํ๋ฆฐ ๊ฒ์ ๋ฌด์์ธ๊ฐ? ์ ๋ตํ์ธ๐ผ
1) UNION ์ฐ์ฐ์๋ ์กฐํ ๊ฒฐ๊ณผ์ ๋ํ ํฉ์งํฉ์ ๋ํ๋ด๋ฉฐ ์๋์ผ๋ก ์ ๋ ฌํด์ค๋ค. 2) UNION ALL ์ฐ์ฐ์๋ ์กฐํ ๊ฒฐ๊ณผ๋ฅผ ์ ๋ ฌํ๊ณ ์ค๋ณต๋๋ ๋ฐ์ดํฐ๋ฅผ ํ ๋ฒ๋ง ํํํ๋ค. 3) INTERSECT ์ฐ์ฐ์๋ ์กฐํ ๊ฒฐ๊ณผ์ ๋ํ ๊ต์งํฉ์ ์๋ฏธํ๋ค. 4) EXCEPT ์ฐ์ฐ์๋ ์กฐํ ๊ฒฐ๊ณผ์ ๋ํ ์ฐจ์งํฉ์ ์๋ฏธํ๋ค. |
๋ฌธ์ 4. ์๊ณ, ์ค๊ณ, ํฉ๊ณ์ฒ๋ผ ๊ณ์ธต์ ๋ถ๋ฅ๋ฅผ ํฌํจํ๊ณ ์๋ ๋ฐ์ดํฐ์ ์ง๊ณ์ ์ ํฉํ GROUP ํจ์ ๋ ๊ฐ์ง๋ ๋ฌด์์ธ๊ฐ? ์ ๋ตํ์ธ๐ผ
1) ROLLUP, SUM 2) ROLLUP, CUBE 3) GROUPING, SUM 4) CUBE, SUM |
๋ฌธ์ 5. ๊ทธ๋ฃน ๋ด ์์ ๊ด๋ จ WINDOW ํจ์์ ํน์ง์ด ํ๋ฆฐ ๊ฒ์ ๋ฌด์์ธ๊ฐ? ์ ๋ตํ์ธ๐ผ
1) RANK ํจ์๋ ๋์ผํ ๊ฐ์ ๋ํด์๋ ๋์ผํ ์์๋ฅผ ๋ถ์ฌํ๋ค(๊ฐ์ ๋ฑ์์ ์ฌ๋ฟ์ด ์กด์ฌํ๋ ๊ฒฝ์ฐ ๋ฑ์๊ฐ SKIP ๋ ์ ์์) 2) DENSE_RANK ํจ์๋ RANK ํจ์์ ํก์ฌํ๋, ๋์ผํ ์์๋ฅผ ํ๋์ ๊ฑด์๋ก ์ทจ๊ธํ๋ ๊ฒ์ด ํ๋ฆฐ์ ์ด๋ค(๊ฐ์ ๋ฑ์์ ์ฌ๋ฟ์ด ์กด์ฌํด๋ ๋ฑ์๊ฐ SKIP๋์ง ์์) 3) CUMM_RANK ํจ์๋ ๋์ ๋ ์์๋ฅผ ๋ถ์ฌํ ์ ์๋ค(๋ฑ์๋ฅผ ๋์ ์์๋ก ํํํจ) 4) RANK ํจ์๊ฐ ๋์ผํ ๊ฐ์ ๋ํด์๋ ๋์ผํ ์์๋ฅผ ๋ถ์ฌํ๋๋ฐ ๋ฐํด, ROW_NUMBER ํจ์๋ ๊ณ ์ ํ ์์๋ฅผ ๋ถ์ฌํ๋ค(๊ฐ์ ๋ฑ์๊ฐ ์กด์ฌํ ์ ์์) |
๋ฌธ์ 6. ๋ค์ SQL ๋ฌธ์ฅ์ ๋ช ํ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋๊ฐ? ์ ๋ตํ์ธ๐ผ
VAR V_PR NUMBER = 5; VAR V_PN NUMBER = 2; SELECT EMPNO, SAL, RN FROM (SELECT EMPNO, SAL, ROWNUM AS RN FROM (SELECT EMPNO, SAL FROM EMP ORDER BY SAL, EMPNO) WHERE ROWNUM <= :V_PR * V_PN) WHERE RN >= (:V_PR * (:V_PN - 1)) + 1; |
1) 0ํ | 2) 2ํ | 3) 5ํ | 4) 10ํ |
๋ฌธ์ 7. ๋ค์ ์ค SELF JOIN์ ์ํํด์ผ ํ ๋๋ ์ด๋ค ๊ฒฝ์ฐ์ธ๊ฐ? ์ ๋ตํ์ธ๐ผ
1) ๋ ํ
์ด๋ธ์ ๊ณตํต ์นผ๋ผ์ด ์กด์ฌํ๊ณ ๋ ํ
์ด๋ธ์ด ์ฐ๊ด ๊ด๊ณ๊ฐ ์๋ค. 2) ๋ ํ ์ด๋ธ์ ์ฐ๊ด๋ ์นผ๋ผ์ ์์ผ๋ ์กฐ์ธํด์ผ ํ๋ค. 3) ํ ํ ์ด๋ธ ๋ด์์ ๋ ์นผ๋ผ์ด ์ฐ๊ด ๊ด๊ณ๊ฐ ์๋ค. 4) ํ ํ ์ด๋ธ ๋ด์์ ์ฐ๊ด๋ ์นผ๋ผ์ ์์ผ๋ ์กฐ์ธํด์ผ ํ๋ค. |
๋ฌธ์ 8. ๋ค์ SQL ๋ฌธ์ฅ์ ๊ฒฐ๊ณผ์์ ename์ด SCOTT์ธ pt ๊ฐ์ ๋ฌด์์ธ๊ฐ? ์ ๋ตํ์ธ๐ผ
SELECT ename, SYS_CONNECT_BY_PATH (ename, ',') AS pt FROM emp START WITH mgr IS NULL CONNECT BY mgr = PRIOR empno; |
1) ,KING | 2) ,KING,JONES |
3) ,KING,JONES,SCOTT | 4) ,KING,JONES,SCOTT,ADAMS |
๋ฌธ์ 9. ๋ค์ SQL ๋ฌธ์ฅ์์ sal ๊ฐ์ ์ด๋ค ์ด๋ก ์ง๊ณ๋๋๊ฐ? ์ ๋ตํ์ธ๐ผ
SELECT * FROM (SELECT TO_CHAR (hiredate, 'YYYY') AS yyyy, job, deptno, sal FROM emp) PIVOT (SUM (sal) FOR deptno IN (10, 20, 30)) ORDER BY 1, 2; |
1) ์ ์ฒด | 2) yyyy | 3) yyyy. job | 4) yyyy. job, deptno |
๋ฌธ์ 10. ๋ค์ SQL ๋ฌธ์ฅ์ ๊ฒฐ๊ณผ๋ก์ ์ถ๋ ฅ๋๋ ๋ฐ์ดํฐ๋ ๋ฌด์์ธ๊ฐ?์ ๋ตํ์ธ๐ผ
SELECT REGEXP_COUNT ('123123123123123', '123', 1) AS c1 FROM DUAL; |
1) 3 | 2) 4 | 3) 5 | 4) 6 |
๐๊ณผ๋ชฉII. ์ 2์ฅ SQL ํ์ฉ ์ฐ์ต๋ฌธ์ (์ด 10) - ์ ๋ต / ํด์ค
1. ์ ๋ต : 4
๐๋ฌธ์ ํ์ธ
ํด์ค : FROM ์ ์ ์ ์๋ ์๋ธ์ฟผ๋ฆฌ๋ INLINE VIEW์ด๋ค. INLINE VIEW๋ ์ผ๋ฐ์ ์ผ๋ก ๋ฉ์ธ์ฟผ๋ฆฌ๋ณด๋ค ๋จผ์ ์ํ๋๋ฏ๋ก SQL ๋ฌธ์ฅ ๋ด์์ ์ ์ฐจ์ฑ์ ์ฃผ๋ ํจ๊ณผ๋ฅผ ์ป์ ์ ์๋ค.
2. ์ ๋ต : 4
๐๋ฌธ์ ํ์ธ
ํด์ค : ์ํธ ์ฐ๊ด ์๋ธ์ฟผ๋ฆฌ๋ ์๋ธ์ฟผ๋ฆฌ๊ฐ ๋ฉ์ธ์ฟผ๋ฆฌ์ ํ ์๋งํผ ์คํ๋๋ ์ฟผ๋ฆฌ๋ก์ ์คํ ์๋๊ฐ ์๋์ ์ผ๋ก ๋จ์ด์ง๋ SQL ๋ฌธ์ฅ์ด๋ค. ๊ทธ๋ฌ๋ ๋ณต์กํ ์ผ๋ฐ ๋ฐฐ์น ํ๋ก๊ทธ๋จ์ ๋์ฒดํ ์ ์๊ธฐ ๋๋ฌธ์ ์กฐ๊ฑด์ ๋ง๋๋ค๋ฉด ์ ๊ทน์ ์ธ ๊ฒํ ๊ฐ ํ์ํ๋ค.
3. ์ ๋ต : 2
๐๋ฌธ์ ํ์ธ
ํด์ค : UNION ALL ์ฐ์ฐ์๋ ์กฐํ ๊ฒฐ๊ณผ์ ๋ํด ๋ณ๋์ ์ ๋ ฌ ์์ ์ ํ์ง ์๋๋ค. ๋ํ ์ค๋ณต ๋ฐ์ดํฐ์ ๋ํด์๋ ์ญ์ ํ์ง ์๊ณ ์ฌ๋ฌ ๋ฒ ์ค๋ณต ํํํ๋ค.
4. ์ ๋ต : 2
๐๋ฌธ์ ํ์ธ
ํด์ค : ROLLUP, CUBE๋ GROUP BY์ ํ์ฅ๋ ํํ์ด๋ฉฐ ๋ณ๋ ฌ๋ก ์ํ์ด ๊ฐ๋ฅํ๊ณ ์ฌ์ฉํ๊ธฐ๊ฐ ์ฝ๊ธฐ ๋๋ฌธ์ ํจ๊ณผ์ ์ด๋ค. ๋ค์ฐจ์์ ์ธ ์ง๊ณ๊ฐ ํ์ํ ๊ฒฝ์ฐ๋ CUBE๋ฅผ ์ฌ์ฉํ๋ค.
5. ์ ๋ต : 3
๐๋ฌธ์ ํ์ธ
ํด์ค : ๊ทธ๋ฃน ๋ด ์์ ๊ด๋ จ WINDOW FUNCTION์ผ๋ก๋ RANK, DENSE_RANK, ROW_NUMBER ํจ์๊ฐ ์๋ค. (3)์ ์ง๋ฌธ์ DENSE_RANK ํจ์์ ๋ํ ์ค๋ช ์ด๋ฉฐ, CUMM_RANK ํจ์๋ ์กด์ฌํ์ง ์๋๋ค.
6. ์ ๋ต : 3
๐๋ฌธ์ ํ์ธ
ํด์ค : ์ธ๋ผ์ธ ๋ทฐ์์ 10ํ์ ์กฐํํ๊ณ , ๋ฉ์ธ ์ฟผ๋ฆฌ์์ 5ํ์ผ๋ก ์ ํํ๋ฏ๋ก 5ํ์ด ๋ฐํ๋๋ค.
7. ์ ๋ต : 3
๐๋ฌธ์ ํ์ธ
ํด์ค : SELF JOIN์ ํ๋์ ํ ์ด๋ธ์์ ๋ ๊ฐ์ ์นผ๋ผ์ด ์ฐ๊ด ๊ด๊ณ๋ฅผ ๊ฐ์ง๊ณ ์๋ ๊ฒฝ์ฐ์ ์ฌ์ฉํ๋ค.
8. ์ ๋ต : 4
๐๋ฌธ์ ํ์ธ
ํด์ค : SYS_CONNECT_BY_PATH ํจ์๋ ๊ณ์ธต์ ๊ฒฝ๋ก๋ฅผ ๋ฐํํ๋ฏ๋ก ,KING,JONES,SCOTT์ด ์ถ๋ ฅ๋๋ค.
9. ์ ๋ต : 3
๐๋ฌธ์ ํ์ธ
ํด์ค : ์ง๊ณ ํจ์์ ์ฌ์ฉํ sal, FOR ์ ์ ์ฌ์ฉํ deptno๋ฅผ ์ ์ธํ yyyy. job์ผ๋ก ์ง๊ณ๋๋ค.
10. ์ ๋ต : 3
๐๋ฌธ์ ํ์ธ
ํด์ค : 123 ํจํด์ด 5๋ฒ ๋ฐ๋ณต๋๋ค.
'IT์๊ฒฉ์ฆ ๊ณต๋ถ > SQLD ์๊ฒฉ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SQL ์ ๋ฌธ๊ฐ] ๊ณผ๋ชฉII. ์ 3์ฅ ๊ด๋ฆฌ ๊ตฌ๋ฌธ - ์ฐ์ต๋ฌธ์ (์ด 7๋ฌธ์ ) (1) | 2022.04.22 |
---|---|
[SQL ์ ๋ฌธ๊ฐ] ๊ณผ๋ชฉII. ์ 3์ฅ ๊ด๋ฆฌ ๊ตฌ๋ฌธ (0) | 2022.04.21 |
[SQL ์ ๋ฌธ๊ฐ] ๊ณผ๋ชฉII. ์ 2์ฅ SQL ํ์ฉ (0) | 2022.04.14 |
[SQL ์ ๋ฌธ๊ฐ] ๊ณผ๋ชฉII. ์ 1์ฅ SQL ๊ธฐ๋ณธ - ์ฐ์ต๋ฌธ์ (1) | 2022.04.14 |
[SQL ์ ๋ฌธ๊ฐ] ๊ณผ๋ชฉII. ์ 1์ฅ SQL ๊ธฐ๋ณธ (0) | 2022.04.13 |