๐Ÿ“Œ
wooaoe TIL
  • ICT ๋ž€?
  • ORACLE DB SQL
  • ๋ฐฑ์ค€ #2581๋ฒˆ JAVA ํ’€์ด
  • DEVEIW 2019 ์ปจํผ๋Ÿฐ์Šค ํ›„๊ธฐ
  • ๋ฐฑ์ค€ #4153๋ฒˆ ์ง๊ฐ์‚ผ๊ฐํ˜•JAVA ํ’€์ด
  • Cloud Computing ๊ณผ AWS
  • JAVA
  • HTML
    • HTML Day 2
    • HTML Day 1
  • Trend & New Tech
  • SQL
Powered by GitBook
On this page

Was this helpful?

ORACLE DB SQL

๐Ÿ‘ฉ๐Ÿผโ€๐Ÿ’ป๋ฌธ์ œ 5๊ฐœ ๋งŒ๋“ค๊ธฐ ์ฑŒ๋ฆฐ์ง€๐Ÿ‘ฉ๐Ÿผโ€๐Ÿ’ป

PreviousICT ๋ž€?Next๋ฐฑ์ค€ #2581๋ฒˆ JAVA ํ’€์ด

Last updated 5 years ago

Was this helpful?

์ฟผ๋ฆฌ๋ฌธ ์งœ๊ธฐ

์‚ฌ์šฉํ•  ๊ณ„์ • : Homework ์‚ฌ์šฉํ•  TABLE : EMPLOYEE, DEPARTMENT, LOCATION, JOB, NATIONAL, SAL_GRADE ์กฐ๊ฑด : SELECT๋ฌธ์„ ํ™œ์šฉํ•œ ๊ทธ ์–ด๋А ์ฟผ๋ฆฌ๋ผ๋„ ๊ฐ€๋Šฅ

SELECT * FROM EMPLOYEE;
SELECT * FROM DEPARTMENT;
SELECT * FROM LOCATION;
SELECT * FROM JOB;
SELECT * FROM NATIONAL;
SELECT * FROM SAL_GRADE;

Story๋ฅผ ํ†ตํ•œ SQL ๋ฌธ์ œ ๋งŒ๋“ค๊ธฐ

  • ๋ชจ๋“  ํ…Œ์ด๋ธ” JOINํ•ด์„œ ์ „์ฒด๋ณด๊ธฐ

  • ์ˆ˜์—… ๋•Œ ๋ฐฐ์šด ๋‚ด์šฉ์„ ์ ์ ˆํ•˜๊ฒŒ ์„ž์–ด์„œ ๋งŒ๋“ค๊ธฐ

  • ๋ฌธ์ œ ๊ผฌ์•„์„œ ๋‚ด์ง€ ์•Š๊ธฐ - ๋‚ด๊ฐ€ ์–ด๋ ค์šฐ๋ฉด ๋‚จ๋“ค๋„ ์–ด๋ ค์›Œ

  • 26์ผ 23:59๋ถ„๊นŒ์ง€ 15๋ฌธ์ œ ์ œ์ถœ(์ด๋ฉ”์ผ ์ œ์ถœ)

  • 1-2 DB_HW(์กฐ์›์ด๋ฆ„).sql

JOIN์„ ํ†ตํ•œ ์ „์ฒด ์‚ฌ์›์˜ ์ •๋ณด ์กฐํšŒํ•ด๋ณด๊ธฐ

SELECT * FROM EMPLOYEE 
JOIN JOB USING(JOB_CODE) 
LEFT JOIN DEPARTMENT ON(DEPT_CODE = DEPT_ID) 
LEFT JOIN LOCATION ON(LOCATION_ID = LOCAL_CODE) 
JOIN NATIONAL USING(NATIONAL_CODE) 
LEFT JOIN SAL_GRADE USING(SAL_LEVEL) 
ORDER BY EMP_ID, EMP_NAME;

๋ฌธ์ œ 1.

--๋ฌธ์ œ 1. 
/*
    ์ด๋ฒˆ ํƒœํ’์œผ๋กœ ์ธํ•ด ์ผ๋ณธ ํ›„์ฟ ์‹œ๋งˆ ์ง€์—ญ์— ์žˆ๋˜ ๋ฐฉ์‚ฌ๋Šฅ ํ๊ธฐ๋ฌผ์ด ํผ์ง€๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    ๋”ฐ๋ผ์„œ ๋ณธ์‚ฌ๋Š” ์ผ๋ณธ ์ง€์‚ฌ์— ์žˆ๋Š” ๋ชจ๋“  ์ง์›๋“ค์„ ํ•œ๊ตญ์œผ๋กœ ๊ท€๊ตญ ์กฐ์น˜ ์‹œํ‚ค๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. 
    ๊ทผ๋ฌด์ง€์—ญ ์ฝ”๋“œ๊ฐ€ 'L2'์ธ ์ง์›์˜ ์‚ฌ๋ฒˆ, ์‚ฌ์›๋ช…, ๋ถ€์„œ๋ช…, ์ง๊ธ‰์ฝ”๋“œ, ์—ฐ๋ฝ์ฒ˜, ์ด๋ฉ”์ผ, 
    ๊ทผ๋ฌด์ง€์—ญ์„ ์กฐํšŒํ•˜์‹œ์˜ค.
*/
SELECT EMP_ID ์‚ฌ๋ฒˆ, EMP_NAME ์‚ฌ์›๋ช…, DEPT_TITLE ๋ถ€์„œ๋ช…, JOB_CODE ์ง๊ธ‰์ฝ”๋“œ, 
       PHONE ์—ฐ๋ฝ์ฒ˜, EMAIL ์ด๋ฉ”์ผ, LOCAL_CODE ์œ„์น˜์ฝ”๋“œ, NATIONAL_CODE ๊ทผ๋ฌด์ง€์—ญ์ฝ”๋“œ,
       NATIONAL_NAME ๊ทผ๋ฌด์ง€์—ญ
FROM EMPLOYEE
JOIN DEPARTMENT ON(DEPT_CODE = DEPT_ID)
JOIN LOCATION ON(LOCAL_CODE = LOCATION_ID)
JOIN NATIONAL USING(NATIONAL_CODE)
WHERE LOCAL_CODE = 'L2';                                  

๋ฌธ์ œ 2.

--๋ฌธ์ œ 2. 
/*
    ๊ฐœ๋ฐœํŒ€์˜ ์‹ค์ˆ˜๋กœ ์‚ฌ์›๋“ค์˜ ์—ฐ๋ฝ์ฒ˜๊ฐ€ ์œ ์ถœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. 
    ๋ชจ๋“  ์‚ฌ์›๋“ค์˜ ์—ฐ๋ฝ์ฒ˜ ๋’ค 4์ž๋ฆฌ๋ฅผ '*'๋กœ ์ฑ„์šฐ๊ณ  
    (์—ฐ๋ฝ์ฒ˜๊ฐ€ ์—†๋Š” ์‚ฌ๋žŒ๋“ค์€ ๊ณ ๋ คํ•˜์ง€ ์•Š์Œ)
    ์‚ฌ๋ฒˆ, ์‚ฌ์›์ด๋ฆ„, ์—ฐ๋ฝ์ฒ˜, ๋ถ€์„œ๋ช…์„ ์กฐํšŒํ•˜๋Š” ์ฟผ๋ฆฌ๋ฌธ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. 
*/
SELECT EMP_ID ์‚ฌ๋ฒˆ, EMP_NAME ์‚ฌ์›๋ช…, 
       RPAD(SUBSTR(PHONE, 1, 7), 11,'*') ์—ฐ๋ฝ์ฒ˜์ˆ˜์ •, 
       DEPT_TITLE ๋ถ€์„œ๋ช…
FROM EMPLOYEE
JOIN DEPARTMENT ON(DEPT_CODE = DEPT_ID);

๋ฌธ์ œ 3.

--๋ฌธ์ œ 3. 
/*
    ์—ฐ๋ฝ์ฒ˜๋ฅผ ์ˆ˜์ •ํ•˜๋‹ค ๋ณด๋‹ˆ, 011, 017 ๋ฒˆํ˜ธ๋ฅผ ์“ฐ๋Š” ์ง์›๋“ค์„ ์œ„ํ•ด 
    ์ตœ์‹  ๊ฐค๋Ÿญ์‹œ ๋…ธํŠธ 10+๋ฅผ ํšŒ์‚ฌ ๋ณต์ง€ ์ฐจ์›์œผ๋กœ ์ง€๊ธ‰ํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค. 
    ์—ฐ๋ฝ์ฒ˜๊ฐ€ '011', '017'๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ง์›๋“ค์˜ ์‚ฌ๋ฒˆ, ์‚ฌ์›๋ช…, ์—ฐ๋ฝ์ฒ˜, ๋ถ€์„œ๋ช…, 
    ์ง๊ธ‰๋ช…์„ ์กฐํšŒํ•˜๊ณ  ์—ฐ๋ฝ์ฒ˜๋ฅผ '010'์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ฒˆํ˜ธ๋กœ ์ˆ˜์ •ํ•˜๋Š” 
    ์ฟผ๋ฆฌ๋ฌธ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. 
*/
SELECT EMP_ID ์‚ฌ๋ฒˆ, EMP_NAME ์‚ฌ์›๋ช…, PHONE ์—ฐ๋ฝ์ฒ˜, DEPT_TITLE ๋ถ€์„œ๋ช…, 
        JOB_NAME ์ง๊ธ‰๋ช…
FROM EMPLOYEE
JOIN DEPARTMENT ON(DEPT_CODE = DEPT_ID)
JOIN JOB USING(JOB_CODE)
WHERE SUBSTR(PHONE, 1, 3) IN('011', '017');

UPDATE EMPLOYEE
SET PHONE = '01047365678'
WHERE SUBSTR(PHONE, 1, 3) = ('011');
UPDATE EMPLOYEE
SET PHONE = '01012839065'
WHERE SUBSTR(PHONE, 1, 3) = ('017');

ROLLBACK;

SELECT EMP_ID, EMP_NAME, PHONE
FROM EMPLOYEE
WHERE EMP_NAME IN('์œค์€ํ•ด', '์‹ฌ๋ด‰์„ ');

๋ฌธ์ œ 4.

--๋ฌธ์ œ 4.
/*
  ๋ณธ์‚ฌ๋Š” ๊ทผ๋ฌด๋…„์ˆ˜๊ฐ€ 5๋…„ ์ด์ƒ์ธ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์žฅ๊ธฐ ๊ทผ์† ์ˆ˜๋‹น(์›”๊ธ‰์˜ 20%)๊ณผ ํ•จ๊ป˜ 
  3์ผ๊ฐ„์˜ ํœด๊ฐ€๋ฅผ ์ฃผ๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค. 
  ๊ทผ๋ฌด๋…„์ˆ˜๊ฐ€ 5๋…„ ์ด์ƒ 29๋…„ ๋ฏธ๋งŒ(๋Œ€ํ‘œ ์ œ์™ธ)์ธ 
  ์‚ฌ์›๋“ค์˜ ์‚ฌ๋ฒˆ, ์‚ฌ์›๋ช…, ๋ถ€์„œ์ฝ”๋“œ, ์ง๊ธ‰์ฝ”๋“œ, ์ง๊ธ‰๋ช…, ์žฅ๊ธฐ๊ทผ์†์ˆ˜๋‹น์„ ์กฐํšŒํ•˜์‹œ์˜ค. 
*/
SELECT EMP_ID ์‚ฌ๋ฒˆ, EMP_NAME ์‚ฌ์›๋ช…, DEPT_CODE ๋ถ€์„œ์ฝ”๋“œ, JOB_CODE ์ง๊ธ‰์ฝ”๋“œ,
    JOB_NAME ์ง๊ธ‰๋ช…, 
    TO_CHAR(TRUNC(SALARY*0.2, -4), 'L999,999,999') ์žฅ๊ธฐ๊ทผ์†์ˆ˜๋‹น    
FROM EMPLOYEE
JOIN JOB USING(JOB_CODE)
WHERE TRUNC(MONTHS_BETWEEN(SYSDATE, HIRE_DATE)/12) BETWEEN 5 AND 28;

๋ฌธ์ œ 5.

--๋ฌธ์ œ 5.
/*
    ๋ณธ์‚ฌ์— ์œ„๊ธฐ๊ฐ€ ๋‹ฅ์ณ ๊ธ‰ํžˆ ๊ตฌ์กฐ์กฐ์ • ๊ณต๋ฌธ์ด ๋‚ด๋ ค์™”์Šต๋‹ˆ๋‹ค. 
    ์ž…์‚ฌ๋…„๋„๊ฐ€ 2000๋…„ ์ด์ „์ธ ์ง์›์ด๊ฑฐ๋‚˜ ๋ถ€์„œ๋ณ„ ๊ฐ€์žฅ ๋†’์€ ์›”๊ธ‰์„
    ๋ฐ›๋Š” ์ง์›๋“ค๋ถ€ํ„ฐ 1์ˆœ์œ„๋กœ ๋ช…์˜ˆํ‡ด์ง ๋Œ€์ƒ์ž์ž…๋‹ˆ๋‹ค. 
    ํ•ด๋‹น ์กฐ๊ฑด์— ๋งž๋Š” ์ง์›๋“ค์˜ ์‚ฌ๋ฒˆ, ์‚ฌ์›๋ช…, ๋ถ€์„œ์ฝ”๋“œ, ์ง๊ธ‰์ฝ”๋“œ, ์›”๊ธ‰, 
    ์ž…์‚ฌ์ผ์„ ์กฐํšŒํ•˜์‹œ์˜ค.
    (๋‹จ, ์›”๊ธ‰์€ TO_CHAR ์ด์šฉํ•˜์—ฌ ํ˜•์‹ ํ‘œ๊ธฐ(์ขŒ์šฐ ๊ณต๋ฐฑ์ œ๊ฑฐ)/
    ๋ถ€์„œ์ฝ”๋“œ๊ฐ€ null์ผ ๊ฒฝ์šฐ '์—†์Œ' ํ‘œ๊ธฐ)
*/
SELECT EMP_ID ์‚ฌ๋ฒˆ, EMP_NAME ์‚ฌ์›๋ช…, NVL(DEPT_CODE,'์—†์Œ') ๋ถ€์„œ์ฝ”๋“œ, 
        JOB_CODE ์ง๊ธ‰์ฝ”๋“œ, TRIM(TO_CHAR(SALARY, 'L999,999,999')) ์›”๊ธ‰, 
        HIRE_DATE ์ž…์‚ฌ์ผ
FROM EMPLOYEE
WHERE (DEPT_CODE, SALARY) IN(SELECT DEPT_CODE, MAX(SALARY) 
FROM EMPLOYEE GROUP BY DEPT_CODE)
    OR HIRE_DATE < TO_DATE('00/01/01');
๐Ÿ”—
๐Ÿ“Œ