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 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 | -- SCOTT --19) emp ํ
์ด๋ธ์์ ์ฌ์๋ฒํธ, ์ฌ์์ด๋ฆ, ์
์ฌ์ผ์ ์ถ๋ ฅํ๋๋ฐ ์
์ฌ์ผ์ด ๋น ๋ฅธ ์ฌ๋์์ผ๋ก ์ ๋ ฌํ์์ค. SELECT empno, ename, hiredate FROM emp ORDER BY hiredate; --20) emp ํ
์ด๋ธ์์ ์ฌ์์ด๋ฆ, ๊ธ์ฌ, ์ฐ๋ด์ ๊ตฌํ๊ณ ์ฐ๋ด์ด ๋ง์ ์์ผ๋ก ์ ๋ ฌํ์์ค. SELECT * FROM emp; SELECT ename, sal, sal*12 as ์ฐ๋ด FROM emp ORDER BY ์ฐ๋ด DESC; --21)10๋ฒ ๋ถ์์ 20๋ฒ๋ถ์์์ ๊ทผ๋ฌดํ๊ณ ์๋ ์ฌ์์ ์ด๋ฆ๊ณผ ๋ถ์๋ฒํธ๋ฅผ ์ถ๋ ฅํ๋๋ฐ ์ด๋ฆ์ ์๋ฌธ์์์ผ๋ก ํ์ํ์์ค. SELECT ename, deptno FROM emp WHERE deptno IN(10,20) ORDER BY ename ASC; --22) ์ปค๋ฏธ์
์ ๋ฐ๋ ๋ชจ๋ ์ฌ์์ ์ด๋ฆ,๊ธ์ฌ ๋ฐ ์ปค๋ฏธ์
์ ์ปค๋ฏธ์
์ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ์ฌ ํ์ํ์ญ์์ค. SELECT ename, comm FROM emp WHERE comm is not null and comm != 0 --<>๋ก ์ธ์์๋ค. ORDER BY comm DESC; --23) empํ
์ด๋ธ์ ์
๋ฌด(job)์ ์ฒซ๊ธ์๋ ๋๋ฌธ์ ๋๋จธ์ง๋ ์๋ฌธ์๋ก ์ถ๋ ฅํ์์ค. INITCAP() ์ฒซ๊ธ์ง๋ ๋๋ฌธ์๋ก ๋๋จธ์ง ์์ SELECT job, INITCAP(job) FROM emp; --24) empํ
์ด๋ธ์์ ์ฌ์์ด๋ฆ ์ค A๊ฐ ํฌํจ๋ ์ฌ์์ด๋ฆ์ ๊ตฌํ๊ณ ๊ทธ ์ด๋ฆ ์ค ์์์ 3์๋ง ์ถ์ถํ์ฌ ์ถ๋ ฅ SELECT ename, SUBSTR(ename,1,3) FROM emp WHERE ename LIKE '%A%'; --25) ์ด๋ฆ์ ์ธ๋ฒ์งธ ๋ฌธ์๊ฐ A์ธ ๋ชจ๋ ์ฌ์์ ์ด๋ฆ์ ํ์ํ์์ค. SELECT ename FROM emp WHERE SUBSTR(ename,3,1) = 'A'; --26) ์ด๋ฆ์ด J,A ๋๋ M์ผ๋ก ์์ํ๋ ๋ชจ๋ ์ฌ์์ ์ด๋ฆ(์ฒซ ๊ธ์๋ ๋๋ฌธ์๋ก, ๋๋จธ์ง ๊ธ์๋ ์๋ฌธ์๋ก ํ์) ๋ฐ ์ด๋ฆ์ ๊ธธ์ด๋ฅผ ํ์ํ์์ค.(์ด ๋ ์ด๋ธ์ name๊ณผ length๋ก ํ์) SELECT ename, INITCAP(ename) AS name, length(ename) FROM emp WHERE ename LIKE 'J%' OR ename LIKE 'A%' OR ename LIKE 'M%'; --27) ์ด๋ฆ์ ๊ธ์์๊ฐ 6์ ์ด์์ธ ์ฌ์์ ์ด๋ฆ์ ์๋ฌธ์๋ก ์ด๋ฆ๋ง ์ถ๋ ฅํ์์ค SELECT lower(ename) FROM emp WHERE length(ename) >= 6; --28) ์ด๋ฆ์ ๊ธ์์๊ฐ 6์ ์ด์์ธ ์ฌ๋์ ์ด๋ฆ์ ์์์ 3์๋ง ๊ตฌํ์ฌ ์๋ฌธ์๋ก ์ถ๋ ฅํ์์ค. SELECT SUBSTR(lower(ename),1,3) FROM emp WHERE length(ename) >=6; --29) ๋ชจ๋ ์ฌ์์ ์ด๋ฆ๊ณผ ๊ธ์ฌ๋ฅผ ํ์ํ์์ค. ๊ธ์ฌ๋ 15์ ๊ธธ์ด๋ก ์ผ์ชฝ์ $๊ธฐํธ๊ฐ ์ฑ์์ง ํ์์ผ๋ก ํ๊ธฐํ๊ณ ์ด๋ ์ด๋ธ์ SALARY๋ก ์ง์ ํ์์ค. SELECT ename, LPAD(sal, 15, '&') AS SALARY FROM emp; --30) ์ค๋๋ถํฐ ์ด๋ฒ๋ฌ์ ๋ง์ง๋ง๋ ๊น์ง์ ๋จ์ ๋ ์๋ฅผ ๊ตฌํ์์ค. SELECT LAST_DAY(SYSDATE) - SYSDATE FROM dual; --31) empํ
์ด๋ธ์์ ๊ฐ ์ฌ์์ ๋ํด ์ฌ์๋ฒํธ, ์ด๋ฆ, ๊ธ์ฌ ๋ฐ 15% ์ธ์๋ ๊ธ์ฌ๋ฅผ ์ ์(๋ฐ์ฌ๋ฆผ)๋ก ํ์ํ์์ค. -- ์ธ์๋ ๊ธ์ฌ์ด์ ๋ ์ด๋ธ์ New Salary๋ก ์ง์ ํ์์ค. SELECT empno, ename, sal, ROUND(sal*1.15) as "New Salary" FROM emp; --32) empํ
์ด๋ธ์์ ์๊ธ์ 4์ ๋ฐฐ์(mod(sal,4)=0)์ธ ์ฌ์์ ์ด๋ฆ๊ณผ ์๊ธ์ ์ถ๋ ฅํ์์ค.(์ธ์๋ฆฌ ๋จ์ ์ผํ ํ์) SELECT ename, TO_CHAR(sal,'999,999,999') FROM emp WHERE mod(sal, 4) = 0 ; -- 33) ๊ฐ ์ฌ์์ ์ด๋ฆ์ ํ์ํ๊ณ ๊ทผ๋ฌด ๋ฌ ์(์
์ฌ์ผ๋ก๋ถํฐ ํ์ฌ๊น์ง์ ๋ฌ์)๋ฅผ ๊ณ์ฐํ์ฌ ์ด ๋ ์ด๋ธ์ MONTHS_WORKED๋ก ์ง์ ํ์์ค. -- ๊ฒฐ๊ณผ๋ ์ ์๋ก ๋ฐ์ฌ๋ฆผํ์ฌ ํ์ํ๊ณ ๊ทผ๋ฌด๋ฌ ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ์์ค. SELECT ename, ROUND(MONTHS_BETWEEN(SYSDATE,hiredate)) AS "MONTHS_WORKED" FROM emp ORDER BY MONTHS_WORKED ASC; -- 34)empํ
์ด๋ธ์์ ์ด๋ฆ, ์
๋ฌด, ๊ทผ๋ฌด์ฐ์ฐจ๋ฅผ ์ถ๋ ฅํ์์ค. SELECT ename, job, TRUNC(MONTHS_BETWEEN(SYSDATE,hiredate)/12) FROM emp; -- 35)empํ
์ด๋ธ์์ ์ฌ์์ด๋ฆ, ์๊ธ, ์๊ธ๊ณผ ์ปค๋ฏธ์
์ ๋ํ ๊ฐ์ ์ปฌ๋ผ๋ช
์ค๊ธ์ฌ๋ผ๊ณ ํด์ ์ถ๋ ฅ. -- ๋จ, NULL๊ฐ์ ๋ํ๋์ง ์๊ฒ ์์ฑํ์์ค. --NVL(comm,0) //comm์ด null ์ด๋ฉด 0์ด๋ค SELECT ename, sal, sal + NVL(comm,0) AS ์ค๊ธ์ฌ FROM emp; -- 36)์๊ธ๊ณผ ์ปค๋ฏธ์
์ ํฉ์น ๊ธ์ก์ด 2,000์ด์์ธ ๊ธ์ฌ๋ฅผ ๋ฐ๋ ์ฌ์์ ์ด๋ฆ,์
๋ฌด,์๊ธ,์ปค๋ฏธ์
,๊ณ ์ฉ๋ ์ง๋ฅผ ์ถ๋ ฅํ์์ค. ๋จ, ๊ณ ์ฉ๋ ์ง๋ 1980-12-17 ํํ๋ก ์ถ๋ ฅํ์์ค. SELECT ename, job, sal, NVL(comm,0), TO_CHAR(hiredate,'yyyy-mm-dd') FROM emp WHERE sal + NVL(comm,0) >=2000; -- 38)๋ชจ๋ ์ฌ์์ ๊ธ์ฌ์ ์ต๊ณ ์ก, ์ต์ ์ก, ์ด์ก ๋ฐ ํ๊ท ์ก์ ํ์ํ์์ค. ์ด ๋ ์ด๋ธ์ ๊ฐ๊ฐ maximum,minimum,sum ๋ฐ average๋ก ์ง์ ํ๊ณ -- ๊ฒฐ๊ณผ๋ฅผ ์ ์๋ก ๋ฐ์ฌ๋ฆผํ๊ณ ์ธ์๋ฆฌ ๋จ์๋ก ,๋ฅผ ๋ช
์ํ์์ค. SELECT TO_CHAR(MAX(sal),'9,999') as maximum , TO_CHAR(MIN(sal),'9,999') as minimum, TO_CHAR(SUM(sal),'99,999') as sum, TO_CHAR(AVG(sal),'9,999') as average FROM emp; -- 39) ์
๋ฌด๊ฐ ๋์ผํ ์ฌ์ ์๋ฅผ ํ์ํ๋ ์ง์๋ฅผ ์์ฑํ์์ค. SELECT job, count(*) FROM emp GROUP BY job; -- 40) empํ
์ด๋ธ์์ 30๋ฒ๋ถ์์ ์ฌ์์๋ฅผ ๊ตฌํ์์ค. SELECT count(*) FROM emp WHERE deptno = 30; -- 41) empํ
์ด๋ธ์์ ์
๋ฌด๋ณ ์ต๊ณ ์๊ธ์ ๊ตฌํ๊ณ ์
๋ฌด,์ต๊ณ ์๊ธ์ ์ถ๋ ฅํ์์ค. SELECT job, MAX(sal) FROM emp GROUP BY job; -- 42) empํ
์ด๋ธ์์ 20๋ฒ๋ถ์์ ๊ธ์ฌ ํฉ๊ณ๋ฅผ ๊ตฌํ๊ณ ๊ธ์ฌ ํฉ๊ณ ๊ธ์ก์ ์ถ๋ ฅํ์์ค. SELECT sum(sal) FROM emp WHERE deptno = 20; -- 43) empํ
์ด๋ธ์์ ๋ถ์๋ณ๋ก ์ง๊ธ๋๋ ์ด์๊ธ์์ ๊ธ์ก์ด 7,000์ด์์ธ ๋ถ์๋ฒํธ, ์ด์๊ธ์ ์ถ๋ ฅํ์์ค. SELECT deptno, SUM(sal) FROM emp GROUP BY deptno HAVING SUM(sal) >= 7000; -- 44) empํ
์ด๋ธ์์ ์
๋ฌด๋ณ๋ก ์ฌ๋ฒ์ด ์ ์ผ ๋ฆ์ ์ฌ๋์ ๊ตฌํ๊ณ ๊ทธ ๊ฒฐ๊ณผ ๋ด์์ ์ฌ๋ฒ์ด 79๋ก ์์ํ๋ ๊ฒฐ๊ณผ๋ง ๋ณด์ฌ์ฃผ์์ค. SELECT job, MAX(empno) FROM emp GROUP BY job HAVING MAX(empno) LIKE '79%'; -- 45) empํ
์ด๋ธ์์ ์
๋ฌด๋ณ ์ด์๊ธ์ ์ถ๋ ฅํ๋๋ฐ ์
๋ฌด๊ฐ 'MANAGER'์ธ ์ฌ์๋ค์ ์ ์ธํ๊ณ ์ด์๊ธ์ด 5,000๋ณด๋ค ํฐ ์
๋ฌด์ ์ด์๊ธ๋ง ์ถ๋ ฅํ์์ค. SELECT job, SUM(sal) FROM emp WHERE job NOT LIKE 'MANAGER' -- != ์ฌ์ฉ๊ฐ๋ฅ GROUP BY job HAVING SUM(sal) > 5000; -- 46)empํ
์ด๋ธ์์ ์
๋ฌด๋ณ๋ก ์ฌ์์๊ฐ 4๋ช
์ด์์ธ ์
๋ฌด์ ์ธ์์๋ฅผ ์ถ๋ ฅํ์์ค. SELECT job, count(*) FROM emp GROUP BY job HAVING count(*) >= 4; -- 47)empํ
์ด๋ธ์์ ์ฌ์์๊ฐ 5๋ช
์ด ๋๋ ๋ถ์์ ๋ถ์๋ฒํธ์ ์ฌ์์๋ฅผ ๊ตฌํ์์ค. SELECT deptno, count(*) FROM emp GROUP BY deptno HAVING count(deptno) >= 5; -- 48)empํ
์ด๋ธ์์ ๋ถ์๋ณ ๊ธ์ฌํ๊ท ์ ๊ตฌํ ๋ ์์์ 3์๋ฆฌ์์ ๋ฐ์ฌ๋ฆผํด์ 2์๋ฆฌ๊น์ง ๊ตฌํ๊ณ ๋ถ์๋ฒํธ, ๊ธ์ฌํ๊ท ์ ์ถ๋ ฅํ์์ค. SELECT deptno, ROUND(avg(sal),2) FROM emp GROUP BY deptno; | cs |
'๐ฆ ๋ฐ์ดํฐ ๋ฒ ์ด์ค (DB) ๐ฆ > ๐ พ ์ค๋ผํด DB & SQL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JOIN๋ฌธ - ๋ฌธ์ 1 (0) | 2021.02.10 |
---|---|
JOIN๋ฌธ (0) | 2021.02.10 |
GROUP BY๋ฌธ - ๋ฌธ์ 3 (0) | 2021.02.10 |
Power, Trunc, Trim, Round๋ฑ ๊ฐ์ข ํจ์ํ์ฉ - ๋ฌธ์ 2 (0) | 2021.02.10 |
ORDER BY๋ฌธ - ๋ฌธ์ 1 (0) | 2021.02.10 |
๋๊ธ