728x90
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 | -- 50) ๋ชจ๋ ์ฌ์์ ์ด๋ฆ, ๋ถ์๋ฒํธ, ๋ถ์์ด๋ฆ์ ํ์ํ์์ค.(emp,dept) SELECT ename, empno, a.deptno, b.deptno, b.dname FROM emp a , dept b WHERE a.deptno = b.deptno; SELECT * FROM emp; --51) ์
๋ฌด๊ฐ MANAGER์ธ ์ฌ์์ ์ ๋ณด๋ฅผ ์ด๋ฆ,์
๋ฌด,๋ถ์๋ช
,๊ทผ๋ฌด์ง ์์ผ๋ก -- ์ถ๋ ฅํ์์ค.(emp,dept) SELECT a.ename, a.job, b.dname, b.loc FROM emp a, dept b WHERE a.deptno = b.deptno and a.job = 'MANAGER'; -- 52) ์ปค๋ฏธ์
์ ๋ฐ๊ณ ๊ธ์ฌ๊ฐ 1,600์ด์์ธ ์ฌ์์ ์ฌ์์ด๋ฆ,๋ถ์๋ช
,๊ทผ๋ฌด์ง๋ฅผ ์ถ๋ ฅํ์์ค SELECT a.ename, b.dname,b.loc FROM emp a, dept b WHERE a.deptno = b.deptno and a.comm is not null and a.sal >= 1600 ; -- 53) ๊ทผ๋ฌด์ง๊ฐ CHICAGO์ธ ๋ชจ๋ ์ฌ์์ ์ด๋ฆ,์
๋ฌด,๋ถ์๋ฒํธ ๋ฐ ๋ถ์์ด๋ฆ์ ํ์ํ์์ค. SELECT a.ename, a.job, b.deptno, b.dname, b.loc FROM emp a , dept b WHERE a.deptno = b.deptno and b.loc = 'CHICAGO'; -- 54) ๊ทผ๋ฌด์ง๋ณ๋ก ๊ทผ๋ฌดํ๋ ์ฌ์์ ์๊ฐ 5๋ช
์ดํ์ธ ๊ฒฝ์ฐ, ์ธ์์ด ์ ์ ๋์์์ผ๋ก ์ ๋ ฌํ์์ค. -- (๊ทผ๋ฌด ์ธ์์ด 0๋ช
์ธ ๊ณณ๋ ํ์) SELECT b.loc, count(*) FROM emp a, dept b WHERE a.deptno = b.deptno GROUP BY b.loc HAVING count(*) <= 5 ORDER BY count(*) ASC; -- 55) ์ฌ์์ ์ด๋ฆ ๋ฐ ์ฌ์ ๋ฒํธ๋ฅผ ๊ด๋ฆฌ์์ ์ด๋ฆ๊ณผ ๊ด๋ฆฌ์ ๋ฒํธ์ ํจ๊ป ํ์ํ๊ณ -- ๊ฐ๊ฐ์ ์ด ๋ ์ด๋ธ์ employee, emp#, manager, mgr#๋ก ์ง์ ํ์์ค. SELECT a.ename as employee, a.empno as "emp#", b.ename as manager, b.empno as "mgr#" FROM emp a, emp b WHERE a.MGR = b.empno; SELECT * FROM emp; -- 56) ๊ด๋ฆฌ์๋ณด๋ค ๋จผ์ ์
์ฌํ ๋ชจ๋ ์ฌ์์ ์ด๋ฆ ๋ฐ ์
์ฌ์ผ์ -- ๊ด๋ฆฌ์์ ์ด๋ฆ ๋ฐ ์
์ฌ์ผ๊ณผ ํจ๊ป ํ์ํ๊ณ ๊ด๋ฆฌ์๋ณด๋ค ์
์ฌ์ผ์ด ๋น ๋ฅธ ์ฌ์์ ์ฐ์ถํ๋ผ. -- ์ด ๋ ์ด๋ธ์ ๊ฐ๊ฐ employee, emp hired, manager, mgr hired๋ก ์ง์ SELECT a.ename, a.hiredate, b.ename, b.hiredate FROM emp a, emp b WHERE a.mgr = b.empno and a.hiredate < b.hiredate; -- 57) ์ฌ์์ ์ด๋ฆ ๋ฐ ์ฌ์๋ฒํธ๋ฅผ ๊ด๋ฆฌ์์ ์ด๋ฆ๊ณผ ๊ด๋ฆฌ์ ๋ฒํธ์ ํจ๊ป ํ์ํ๊ณ -- ๊ฐ๊ฐ์ ์ด ๋ ์ด๋ธ์ employee, emp#, manager, mgr#๋ก ์ง์ ํ๋๋ฐ -- King์ ํฌํจํ์ฌ ๊ด๋ฆฌ์๊ฐ ์๋ ๋ชจ๋ ์ฌ์์ ํ์ํ๋๋ก ํ๊ณ -- ๊ฒฐ๊ณผ๋ฅผ ์ฌ์๋ฒํธ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ -- left ์ฌ์ฉ SELECT a.ename AS employee, a.empno AS "emp#" ,b.ename AS manager, b.empno AS "mgr#" FROM emp a, emp b WHERE a.mgr = b.empno(+) ORDER BY a.empno; -- 58) ์ง์ ํ ๋ถ์๋ฒํธ, ์ฌ์์ด๋ฆ ๋ฐ ์ง์ ํ ์ฌ์๊ณผ ๋์ผํ ๋ถ์์์ ๊ทผ๋ฌดํ๋ -- ๋ชจ๋ ์ฌ์์ ํ์ํ๋๋ก ์ง์๋ฅผ ์์ฑํ๊ณ -- ๋ถ์๋ฒํธ๋ department, ์ฌ์์ด๋ฆ์ employee, ๋์ผํ ๋ถ์์์ ๊ทผ๋ฌดํ๋ ์ฌ์์ colleague๋ก ํ์ํ์์ค. -- (๋ถ์๋ฒํธ, ์ฌ์์ด๋ฆ,๋๋ฃ ์์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ) (์ด๋ ค์)******************** SELECT b.deptno as department , a.ename as employee FROM emp a, emp b WHERE a.deptno = b.deptno and a.empno <> b.empno ORDER BY a.deptno ASC, a.ename ASC, b.ename; -- 59)10๋ฒ ๋ถ์์์ ๊ทผ๋ฌดํ๋ ์ฌ์๋ค์ -- ๋ถ์๋ฒํธ, ๋ถ์์ด๋ฆ, ์ฌ์์ด๋ฆ, ์๊ธ, ๊ธ์ฌ๋ฑ๊ธ์ ์ถ๋ ฅํ์์ค SELECT e.deptno, d.dname, e.ename, e.sal, s.grade FROM emp e, dept d, salgrade s WHERE e.deptno = d.deptno AND e.deptno = 10 AND e.sal BETWEEN s.losal AND s.hisal; SELECT empno, ename, trunc(TO_DATE(SYSDATE)-hiredate) AS "๊ทผ๋ฌด ์ผ์" FROM emp ORDER BY "๊ทผ๋ฌด ์ผ์" DESC; SELECT empno, ename, trunc(TO_DATE('2021-02-10')-hiredate) AS "๊ทผ๋ฌด ์ผ์" FROM emp ORDER BY "๊ทผ๋ฌด ์ผ์" DESC; SELECT a.empno AS ์ฌ์๋ฒํธ, a.ename AS ์ฌ์์ด๋ฆ, NVL(a.comm,0) AS ๋ณด๋์ค, b.deptno AS ๋ถ์๋ฒํธ, b.dname AS ๋ถ์์ด๋ฆ, b.loc AS ๋ถ์์์น FROM emp a, dept b WHERE a.deptno = b.deptno and b.loc LIKE '%GO'; | cs |
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 | -- 50) ๋ชจ๋ ์ฌ์์ ์ด๋ฆ, ๋ถ์๋ฒํธ, ๋ถ์์ด๋ฆ์ ํ์ํ์์ค.(emp,dept) SELECT ename, empno, a.deptno, b.deptno, b.dname FROM emp a , dept b WHERE a.deptno = b.deptno; SELECT * FROM emp; --51) ์
๋ฌด๊ฐ MANAGER์ธ ์ฌ์์ ์ ๋ณด๋ฅผ ์ด๋ฆ,์
๋ฌด,๋ถ์๋ช
,๊ทผ๋ฌด์ง ์์ผ๋ก -- ์ถ๋ ฅํ์์ค.(emp,dept) SELECT a.ename, a.job, b.dname, b.loc FROM emp a, dept b WHERE a.deptno = b.deptno and a.job = 'MANAGER'; -- 52) ์ปค๋ฏธ์
์ ๋ฐ๊ณ ๊ธ์ฌ๊ฐ 1,600์ด์์ธ ์ฌ์์ ์ฌ์์ด๋ฆ,๋ถ์๋ช
,๊ทผ๋ฌด์ง๋ฅผ ์ถ๋ ฅํ์์ค SELECT a.ename, b.dname,b.loc FROM emp a, dept b WHERE a.deptno = b.deptno and a.comm is not null and a.sal >= 1600 ; -- 53) ๊ทผ๋ฌด์ง๊ฐ CHICAGO์ธ ๋ชจ๋ ์ฌ์์ ์ด๋ฆ,์
๋ฌด,๋ถ์๋ฒํธ ๋ฐ ๋ถ์์ด๋ฆ์ ํ์ํ์์ค. SELECT a.ename, a.job, b.deptno, b.dname, b.loc FROM emp a , dept b WHERE a.deptno = b.deptno and b.loc = 'CHICAGO'; -- 54) ๊ทผ๋ฌด์ง๋ณ๋ก ๊ทผ๋ฌดํ๋ ์ฌ์์ ์๊ฐ 5๋ช
์ดํ์ธ ๊ฒฝ์ฐ, ์ธ์์ด ์ ์ ๋์์์ผ๋ก ์ ๋ ฌํ์์ค. -- (๊ทผ๋ฌด ์ธ์์ด 0๋ช
์ธ ๊ณณ๋ ํ์) SELECT b.loc, count(*) FROM emp a, dept b WHERE a.deptno = b.deptno GROUP BY b.loc HAVING count(*) <= 5 ORDER BY count(*) ASC; -- 55) ์ฌ์์ ์ด๋ฆ ๋ฐ ์ฌ์ ๋ฒํธ๋ฅผ ๊ด๋ฆฌ์์ ์ด๋ฆ๊ณผ ๊ด๋ฆฌ์ ๋ฒํธ์ ํจ๊ป ํ์ํ๊ณ -- ๊ฐ๊ฐ์ ์ด ๋ ์ด๋ธ์ employee, emp#, manager, mgr#๋ก ์ง์ ํ์์ค. SELECT a.ename as employee, a.empno as "emp#", b.ename as manager, b.empno as "mgr#" FROM emp a, emp b WHERE a.MGR = b.empno; SELECT * FROM emp; -- 56) ๊ด๋ฆฌ์๋ณด๋ค ๋จผ์ ์
์ฌํ ๋ชจ๋ ์ฌ์์ ์ด๋ฆ ๋ฐ ์
์ฌ์ผ์ -- ๊ด๋ฆฌ์์ ์ด๋ฆ ๋ฐ ์
์ฌ์ผ๊ณผ ํจ๊ป ํ์ํ๊ณ ๊ด๋ฆฌ์๋ณด๋ค ์
์ฌ์ผ์ด ๋น ๋ฅธ ์ฌ์์ ์ฐ์ถํ๋ผ. -- ์ด ๋ ์ด๋ธ์ ๊ฐ๊ฐ employee, emp hired, manager, mgr hired๋ก ์ง์ SELECT a.ename, a.hiredate, b.ename, b.hiredate FROM emp a, emp b WHERE a.mgr = b.empno and a.hiredate < b.hiredate; -- 57) ์ฌ์์ ์ด๋ฆ ๋ฐ ์ฌ์๋ฒํธ๋ฅผ ๊ด๋ฆฌ์์ ์ด๋ฆ๊ณผ ๊ด๋ฆฌ์ ๋ฒํธ์ ํจ๊ป ํ์ํ๊ณ -- ๊ฐ๊ฐ์ ์ด ๋ ์ด๋ธ์ employee, emp#, manager, mgr#๋ก ์ง์ ํ๋๋ฐ -- King์ ํฌํจํ์ฌ ๊ด๋ฆฌ์๊ฐ ์๋ ๋ชจ๋ ์ฌ์์ ํ์ํ๋๋ก ํ๊ณ -- ๊ฒฐ๊ณผ๋ฅผ ์ฌ์๋ฒํธ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ -- left ์ฌ์ฉ SELECT a.ename AS employee, a.empno AS "emp#" ,b.ename AS manager, b.empno AS "mgr#" FROM emp a, emp b WHERE a.mgr = b.empno(+) ORDER BY a.empno; -- 58) ์ง์ ํ ๋ถ์๋ฒํธ, ์ฌ์์ด๋ฆ ๋ฐ ์ง์ ํ ์ฌ์๊ณผ ๋์ผํ ๋ถ์์์ ๊ทผ๋ฌดํ๋ -- ๋ชจ๋ ์ฌ์์ ํ์ํ๋๋ก ์ง์๋ฅผ ์์ฑํ๊ณ -- ๋ถ์๋ฒํธ๋ department, ์ฌ์์ด๋ฆ์ employee, ๋์ผํ ๋ถ์์์ ๊ทผ๋ฌดํ๋ ์ฌ์์ colleague๋ก ํ์ํ์์ค. -- (๋ถ์๋ฒํธ, ์ฌ์์ด๋ฆ,๋๋ฃ ์์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ) (์ด๋ ค์)******************** SELECT b.deptno as department , a.ename as employee FROM emp a, emp b WHERE a.deptno = b.deptno and a.empno <> b.empno ORDER BY a.deptno ASC, a.ename ASC, b.ename; -- 59)10๋ฒ ๋ถ์์์ ๊ทผ๋ฌดํ๋ ์ฌ์๋ค์ -- ๋ถ์๋ฒํธ, ๋ถ์์ด๋ฆ, ์ฌ์์ด๋ฆ, ์๊ธ, ๊ธ์ฌ๋ฑ๊ธ์ ์ถ๋ ฅํ์์ค SELECT e.deptno, d.dname, e.ename, e.sal, s.grade FROM emp e, dept d, salgrade s WHERE e.deptno = d.deptno AND e.deptno = 10 AND e.sal BETWEEN s.losal AND s.hisal; SELECT empno, ename, trunc(TO_DATE(SYSDATE)-hiredate) AS "๊ทผ๋ฌด ์ผ์" FROM emp ORDER BY "๊ทผ๋ฌด ์ผ์" DESC; SELECT empno, ename, trunc(TO_DATE('2021-02-10')-hiredate) AS "๊ทผ๋ฌด ์ผ์" FROM emp ORDER BY "๊ทผ๋ฌด ์ผ์" DESC; SELECT a.empno AS ์ฌ์๋ฒํธ, a.ename AS ์ฌ์์ด๋ฆ, NVL(a.comm,0) AS ๋ณด๋์ค, b.deptno AS ๋ถ์๋ฒํธ, b.dname AS ๋ถ์์ด๋ฆ, b.loc AS ๋ถ์์์น FROM emp a, dept b WHERE a.deptno = b.deptno and b.loc LIKE '%GO'; | cs |
'๐ฆ ๋ฐ์ดํฐ ๋ฒ ์ด์ค (DB) ๐ฆ > ๐ พ ์ค๋ผํด DB & SQL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํน์ ์ฟผ๋ฆฌ CASE, DECODE (0) | 2021.02.15 |
---|---|
JOIN๋ฌธ - ๋ฌธ์ 2 (0) | 2021.02.10 |
JOIN๋ฌธ (0) | 2021.02.10 |
ORDER, GROUP BY๋ฌธ - ๋ฌธ์ 4 (Scott) (0) | 2021.02.10 |
GROUP BY๋ฌธ - ๋ฌธ์ 3 (0) | 2021.02.10 |
๋๊ธ