SQL. ์žฌ๋ฏธ์žˆ๋Š” ํผ์ฆ

์•ˆ๋…• ํ•˜๋ธŒ๋ฅด!

์ €๋Š” 3๋…„ ์ด์ƒ ๋‹ค์–‘ํ•œ ๊ต์œก ์„ผํ„ฐ์—์„œ SQL์„ ๊ฐ€๋ฅด์น˜๊ณ  ์žˆ์œผ๋ฉฐ ์ œ๊ฐ€ ๊ด€์ฐฐํ•œ ๊ฒƒ ์ค‘ ํ•˜๋‚˜๋Š” ํ•™์ƒ๋“ค์ด ๊ฐ€๋Šฅ์„ฑ๊ณผ ์ด๋ก ์  ํ† ๋Œ€์— ๋Œ€ํ•ด์„œ๋งŒ ์ด์•ผ๊ธฐํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ณผ์ œ๊ฐ€ ์ฃผ์–ด์ง€๋ฉด SQL์„ ๋” ์ž˜ ๋งˆ์Šคํ„ฐํ•˜๊ณ  ์ดํ•ดํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ๊ธฐ์‚ฌ์—์„œ๋Š” ํ•™์ƒ๋“ค์—๊ฒŒ ์ˆ™์ œ๋กœ ์ œ๊ณตํ•˜๊ณ  SQL์— ๋Œ€ํ•œ ๊นŠ๊ณ  ๋ช…ํ™•ํ•œ ์ดํ•ด๋กœ ์ด์–ด์ง€๋Š” ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ๋ธŒ๋ ˆ์ธ์Šคํ† ๋ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—… ๋ชฉ๋ก์„ ์—ฌ๋Ÿฌ๋ถ„๊ณผ ๊ณต์œ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

SQL. ์žฌ๋ฏธ์žˆ๋Š” ํผ์ฆ

SQL(หˆษ›sหˆkjuหˆษ›l; eng. ๊ตฌ์กฐ์  ์ฟผ๋ฆฌ ์–ธ์–ด)์€ ์ ์ ˆํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์— ์˜ํ•ด ๊ด€๋ฆฌ๋˜๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑ, ์ˆ˜์ • ๋ฐ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์„ ์–ธ์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. ๋” ์ฝ๊ธฐ ...

๋‹ค๋ฅธ ๊ณณ์—์„œ SQL์— ๋Œ€ํ•ด ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ถœ์ฒ˜.
์ด ๊ธฐ์‚ฌ๋Š” SQL์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ฐ€๋ฅด์น˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.

์ž, ๊ฐ€์ž.

์šฐ๋ฆฌ๋Š” ์ž˜ ์•Œ๋ ค์ง„ ๊ฒƒ์„ ์‚ฌ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค ์ธ์‚ฌ์ œ๋„ Oracle์—์„œ ํ•ด๋‹น ํ…Œ์ด๋ธ”(๋”):

SQL. ์žฌ๋ฏธ์žˆ๋Š” ํผ์ฆ
SELECT์— ๋Œ€ํ•œ ์ž‘์—…๋งŒ ๊ณ ๋ คํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. DML ๋ฐ DDL์—๋Š” ์ž‘์—…์ด ์—†์Šต๋‹ˆ๋‹ค.

์ž‘์—…

๋ฐ์ดํ„ฐ ์ œํ•œ ๋ฐ ์ •๋ ฌ

์ง์› ํ…Œ์ด๋ธ”. ๋ชจ๋“  ์ง์›์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ํฌํ•จ๋œ ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ
๊ฒฐ์ •

SELECT * FROM employees

์ง์› ํ…Œ์ด๋ธ”. 'David'๋ผ๋Š” ์ด๋ฆ„์˜ ๋ชจ๋“  ์ง์› ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ
๊ฒฐ์ •

SELECT *
  FROM employees
 WHERE first_name = 'David';

์ง์› ํ…Œ์ด๋ธ”. job_id๊ฐ€ 'IT_PROG'์ธ ๋ชจ๋“  ์ง์› ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ
๊ฒฐ์ •

SELECT *
  FROM employees
 WHERE job_id = 'IT_PROG'

์ง์› ํ…Œ์ด๋ธ”. ๊ธ‰์—ฌ(๊ธ‰์—ฌ)๊ฐ€ 50๋ณด๋‹ค ํฐ 4000๋ฒˆ์งธ ๋ถ€์„œ(department_id)์˜ ๋ชจ๋“  ์ง์› ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ
๊ฒฐ์ •

SELECT *
  FROM employees
 WHERE department_id = 50 AND salary > 4000;

์ง์› ํ…Œ์ด๋ธ”. 20๋ฒˆ์งธ ๋ฐ 30๋ฒˆ์งธ ๋ถ€์„œ(department_id)์˜ ๋ชจ๋“  ์ง์› ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ
๊ฒฐ์ •

SELECT *
  FROM employees
 WHERE department_id = 20 OR department_id = 30;

์ง์› ํ…Œ์ด๋ธ”. ์ด๋ฆ„์˜ ๋งˆ์ง€๋ง‰ ๋ฌธ์ž๊ฐ€ 'a'์ธ ๋ชจ๋“  ์ง์›์˜ ๋ชฉ๋ก์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
๊ฒฐ์ •

SELECT *
  FROM employees
 WHERE first_name LIKE '%a';

์ง์› ํ…Œ์ด๋ธ”. ๋ณด๋„ˆ์Šค๊ฐ€ ์žˆ๋Š” 50๋ฒˆ์งธ ๋ฐ 80๋ฒˆ์งธ ๋ถ€์„œ(department_id)์˜ ๋ชจ๋“  ์ง์› ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ(commission_pct ์—ด์˜ ๊ฐ’์€ ๋น„์–ด ์žˆ์ง€ ์•Š์Œ)
๊ฒฐ์ •

SELECT *
  FROM employees
 WHERE     (department_id = 50 OR department_id = 80)
       AND commission_pct IS NOT NULL;

์ง์› ํ…Œ์ด๋ธ”. ์ด๋ฆ„์— 'n'์ด 2๊ฐœ ์ด์ƒ ํฌํ•จ๋œ ๋ชจ๋“  ์ง์›์˜ ๋ชฉ๋ก์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
๊ฒฐ์ •

SELECT *
  FROM employees
 WHERE first_name LIKE '%n%n%';

์ง์› ํ…Œ์ด๋ธ”. ์ด๋ฆ„์ด 4๊ธ€์ž๋ณด๋‹ค ๊ธด ๋ชจ๋“  ์ง์› ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ
๊ฒฐ์ •

SELECT *
  FROM employees
 WHERE first_name LIKE '%_____%';

์ง์› ํ…Œ์ด๋ธ”. ๊ธ‰์—ฌ๊ฐ€ 8000์—์„œ 9000 ์‚ฌ์ด์ธ ๋ชจ๋“  ์ง์› ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ(ํฌํ•จ)
๊ฒฐ์ •

SELECT *
  FROM employees
 WHERE salary BETWEEN 8000 AND 9000;

์ง์› ํ…Œ์ด๋ธ”. ์ด๋ฆ„์— '%' ๊ธฐํ˜ธ๊ฐ€ ํฌํ•จ๋œ ๋ชจ๋“  ์ง์›์˜ ๋ชฉ๋ก์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
๊ฒฐ์ •

SELECT *
  FROM employees
 WHERE first_name LIKE '%%%' ESCAPE '';

์ง์› ํ…Œ์ด๋ธ”. ๋ชจ๋“  ๊ด€๋ฆฌ์ž ID ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ
๊ฒฐ์ •

SELECT DISTINCT manager_id
  FROM employees
 WHERE manager_id IS NOT NULL;

์ง์› ํ…Œ์ด๋ธ”. Donald(sh_clerk) ํ˜•์‹์˜ ์ง์› ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ
๊ฒฐ์ •

SELECT first_name || '(' || LOWER (job_id) || ')' employee FROM employees;

๋‹จ์ผ ํ–‰ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ถœ๋ ฅ ์‚ฌ์šฉ์ž ์ •์˜

์ง์› ํ…Œ์ด๋ธ”. ์ด๋ฆ„์ด 10๊ธ€์ž๋ณด๋‹ค ๊ธด ๋ชจ๋“  ์ง์› ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ
๊ฒฐ์ •

SELECT *
  FROM employees
 WHERE LENGTH (first_name) > 10;

์ง์› ํ…Œ์ด๋ธ”. ์ด๋ฆ„์— ๋ฌธ์ž 'b'๊ฐ€ ์žˆ๋Š” ๋ชจ๋“  ์ง์› ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ(๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ ์•ˆ ํ•จ)
๊ฒฐ์ •

SELECT *
  FROM employees
 WHERE INSTR (LOWER (first_name), 'b') > 0;

์ง์› ํ…Œ์ด๋ธ”. ์ด๋ฆ„์— 'a'๊ฐ€ 2๊ฐœ ์ด์ƒ ํฌํ•จ๋œ ๋ชจ๋“  ์ง์›์˜ ๋ชฉ๋ก์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
๊ฒฐ์ •

SELECT *
  FROM employees
 WHERE INSTR (LOWER (first_name),'a',1,2) > 0;

์ง์› ํ…Œ์ด๋ธ”. ๊ธ‰์—ฌ๊ฐ€ 1000์˜ ๋ฐฐ์ˆ˜์ธ ๋ชจ๋“  ์ง์› ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ
๊ฒฐ์ •

SELECT *
  FROM employees
 WHERE MOD (salary, 1000) = 0;

์ง์› ํ…Œ์ด๋ธ”. ๋ฒˆํ˜ธ๊ฐ€ ะฅะฅะฅ.ะฅะฅะฅ.ะฅะฅะฅะฅ ํ˜•์‹์ธ ๊ฒฝ์šฐ ์ง์› ์ „ํ™” ๋ฒˆํ˜ธ์˜ ์ฒซ 3์ž๋ฆฌ ์ˆซ์ž๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
๊ฒฐ์ •

SELECT phone_number, SUBSTR (phone_number, 1, 3) new_phone_number
  FROM employees
 WHERE phone_number LIKE '___.___.____';

๋ถ€์„œ ํ…Œ์ด๋ธ”. ์ด๋ฆ„์— ๋‘ ๋‹จ์–ด ์ด์ƒ์ธ ๊ฒฝ์šฐ ๋ถ€์„œ ์ด๋ฆ„์—์„œ ์ฒซ ๋‹จ์–ด ๊ฐ€์ ธ ์˜ค๊ธฐ
๊ฒฐ์ •

SELECT department_name,
       SUBSTR (department_name, 1, INSTR (department_name, ' ')-1)
           first_word
  FROM departments
 WHERE INSTR (department_name, ' ') > 0;

์ง์› ํ…Œ์ด๋ธ”. ์ด๋ฆ„์˜ ์ฒซ ๊ธ€์ž์™€ ๋งˆ์ง€๋ง‰ ๊ธ€์ž ์—†์ด ์ง์› ์ด๋ฆ„ ๊ฐ€์ ธ์˜ค๊ธฐ
๊ฒฐ์ •

SELECT first_name, SUBSTR (first_name, 2, LENGTH (first_name) - 2) new_name
  FROM employees;

์ง์› ํ…Œ์ด๋ธ”. ์ด๋ฆ„์˜ ๋งˆ์ง€๋ง‰ ๋ฌธ์ž๊ฐ€ 'm'์ด๊ณ  ์ด๋ฆ„์˜ ๊ธธ์ด๊ฐ€ 5๋ณด๋‹ค ํฐ ๋ชจ๋“  ์ง์›์˜ ๋ชฉ๋ก์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
๊ฒฐ์ •

SELECT *
  FROM employees
 WHERE SUBSTR (first_name, -1) = 'm' AND LENGTH(first_name)>5;

๋“€์–ผ ํ…Œ์ด๋ธ”. ๋‹ค์Œ์ฃผ ๊ธˆ์š”์ผ ๋‚ ์งœ ๊ตฌํ•˜๊ธฐ
๊ฒฐ์ •

SELECT NEXT_DAY (SYSDATE, 'FRIDAY') next_friday FROM DUAL;

์ง์› ํ…Œ์ด๋ธ”. 17๋…„ ์ด์ƒ ํšŒ์‚ฌ์— ๊ทผ๋ฌดํ•œ ๋ชจ๋“  ์ง์› ๋ชฉ๋ก์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
๊ฒฐ์ •

SELECT *
  FROM employees
 WHERE MONTHS_BETWEEN (SYSDATE, hire_date) / 12 > 17;

์ง์› ํ…Œ์ด๋ธ”. ์ „ํ™”๋ฒˆํ˜ธ์˜ ๋งˆ์ง€๋ง‰ ์ž๋ฆฌ๊ฐ€ ํ™€์ˆ˜์ด๊ณ  ์ ์œผ๋กœ ๊ตฌ๋ถ„๋œ 3๊ฐœ์˜ ์ˆซ์ž๋กœ ๊ตฌ์„ฑ๋œ ๋ชจ๋“  ์ง์›์˜ ๋ชฉ๋ก์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
๊ฒฐ์ •

SELECT *
  FROM employees
 WHERE     MOD (SUBSTR (phone_number, -1), 2) != 0
       AND INSTR (phone_number,'.',1,3) = 0;

์ง์› ํ…Œ์ด๋ธ”. '_' ๊ธฐํ˜ธ ๋’ค์˜ job_id ๊ฐ’์ด 3์ž ์ด์ƒ์ด์ง€๋งŒ '_' ๋’ค์˜ ์ด ๊ฐ’์ด 'CLERK'์™€ ๊ฐ™์ง€ ์•Š์€ ๋ชจ๋“  ์ง์›์˜ ๋ชฉ๋ก์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
๊ฒฐ์ •

SELECT *
  FROM employees
 WHERE     LENGTH (SUBSTR (job_id, INSTR (job_id, '_') + 1)) > 3
       AND SUBSTR (job_id, INSTR (job_id, '_') + 1) != 'CLERK';

์ง์› ํ…Œ์ด๋ธ”. PHONE_NUMBER ๊ฐ’์—์„œ '.'์„ ๋ชจ๋‘ ๊ต์ฒดํ•˜์—ฌ ๋ชจ๋“  ์ง์› ๋ชฉ๋ก์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ์— '-'
๊ฒฐ์ •

SELECT phone_number, REPLACE (phone_number, '.', '-') new_phone_number
  FROM employees;

๋ณ€ํ™˜ ํ•จ์ˆ˜ ๋ฐ ์กฐ๊ฑด์‹ ์‚ฌ์šฉ

์ง์› ํ…Œ์ด๋ธ”. ๋งค์›” XNUMX์ผ์— ์ถœ๊ทผํ•œ ๋ชจ๋“  ์ง์› ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ(์ž„์˜)
๊ฒฐ์ •

SELECT *
  FROM employees
 WHERE TO_CHAR (hire_date, 'DD') = '01';

์ง์› ํ…Œ์ด๋ธ”. 2008๋…„์— ์ถœ๊ทผํ•œ ๋ชจ๋“  ์ง์›์˜ ๋ชฉ๋ก์„ ๋ฐ›์œผ์‹ญ์‹œ์˜ค.
๊ฒฐ์ •

SELECT *
  FROM employees
 WHERE TO_CHAR (hire_date, 'YYYY') = '2008';

๋“€์–ผ ํ…Œ์ด๋ธ”. ๋‚ด์ผ ๋‚ ์งœ๋ฅผ ๋‹ค์Œ ํ˜•์‹์œผ๋กœ ํ‘œ์‹œ: Tomorrow is Second day of January
๊ฒฐ์ •

SELECT TO_CHAR (SYSDATE, 'fm""Tomorrow is ""Ddspth ""day of"" Month')     info
  FROM DUAL;

์ง์› ํ…Œ์ด๋ธ”. 21๋…„ 2007์›” XNUMX์ผ ํ˜•์‹์˜ ๋ชจ๋“  ์ง์› ๋ฐ ์‹œ์ž‘ ๋‚ ์งœ ๋ชฉ๋ก์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
๊ฒฐ์ •

SELECT first_name, TO_CHAR (hire_date, 'fmddth ""of"" Month, YYYY') hire_date
  FROM employees;

์ง์› ํ…Œ์ด๋ธ”. ๊ธ‰์—ฌ๊ฐ€ 20% ์ธ์ƒ๋œ ์ง์› ๋ชฉ๋ก์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ๋‹ฌ๋Ÿฌ ๊ธฐํ˜ธ๋กœ ๊ธ‰์—ฌ ํ‘œ์‹œ
๊ฒฐ์ •

SELECT first_name, TO_CHAR (salary + salary * 0.20, 'fm$999,999.00') new_salary
  FROM employees;

์ง์› ํ…Œ์ด๋ธ”. 2007๋…„ XNUMX์›”์— ์ถœ๊ทผํ•œ ๋ชจ๋“  ์ง์›์˜ ๋ชฉ๋ก์„ ๋ฐ›์œผ์‹ญ์‹œ์˜ค.
๊ฒฐ์ •

SELECT *
  FROM employees
 WHERE hire_date BETWEEN TO_DATE ('01.02.2007', 'DD.MM.YYYY')
                     AND LAST_DAY (TO_DATE ('01.02.2007', 'DD.MM.YYYY'));

SELECT *
  FROM employees
 WHERE to_char(hire_date,'MM.YYYY') = '02.2007'; 

๋“€์–ผ ํ…Œ์ด๋ธ”. ํ˜„์žฌ ๋‚ ์งœ, +์ดˆ, +๋ถ„, +์‹œ, +์ผ, +์›”, +๋…„ ๋‚ด๋ณด๋‚ด๊ธฐ
๊ฒฐ์ •

SELECT SYSDATE                          now,
       SYSDATE + 1 / (24 * 60 * 60)     plus_second,
       SYSDATE + 1 / (24 * 60)          plus_minute,
       SYSDATE + 1 / 24                 plus_hour,
       SYSDATE + 1                      plus_day,
       ADD_MONTHS (SYSDATE, 1)          plus_month,
       ADD_MONTHS (SYSDATE, 12)         plus_year
  FROM DUAL;

์ง์› ํ…Œ์ด๋ธ”. ์ „์ฒด ๊ธ‰์—ฌ(๊ธ‰์—ฌ + ์ปค๋ฏธ์…˜_pct(%))๋ฅผ ๋ฐ›๋Š” ๋ชจ๋“  ์ง์›์˜ ๋ชฉ๋ก์„ $24,000.00 ํ˜•์‹์œผ๋กœ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
๊ฒฐ์ •

SELECT first_name, salary, TO_CHAR (salary + salary * NVL (commission_pct, 0), 'fm$99,999.00') full_salary
  FROM employees;

์ง์› ํ…Œ์ด๋ธ”. ๊ธ‰์—ฌ ๋ณด๋„ˆ์Šค์˜ ๊ฐ€์šฉ์„ฑ์— ๋Œ€ํ•œ ๋ชจ๋“  ์ง์› ๋ฐ ์ •๋ณด ๋ชฉ๋ก ์–ป๊ธฐ(์˜ˆ/์•„๋‹ˆ์š”)
๊ฒฐ์ •

SELECT first_name, commission_pct, NVL2 (commission_pct, 'Yes', 'No') has_bonus
  FROM employees;

์ง์› ํ…Œ์ด๋ธ”. ๊ฐ ์ง์›์˜ ๊ธ‰์—ฌ ์ˆ˜์ค€ ๊ฐ€์ ธ์˜ค๊ธฐ: 5000 ๋ฏธ๋งŒ์€ ๋‚ฎ์€ ์ˆ˜์ค€, 5000 ์ด์ƒ 10000 ๋ฏธ๋งŒ์€ ๋ณดํ†ต ์ˆ˜์ค€, 10000 ์ด์ƒ์€ ๋†’์€ ์ˆ˜์ค€์œผ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค.
๊ฒฐ์ •

SELECT first_name,
       salary,
       CASE
           WHEN salary < 5000 THEN 'Low'
           WHEN salary >= 5000 AND salary < 10000 THEN 'Normal'
           ELSE 'High'
       END salary_level
  FROM employees;

๊ตญ๊ฐ€ ํ…Œ์ด๋ธ”. ๊ฐ ๊ตญ๊ฐ€์— ๋Œ€ํ•ด ํ•ด๋‹น ๊ตญ๊ฐ€๊ฐ€ ์œ„์น˜ํ•œ ์ง€์—ญ ํ‘œ์‹œ: 1-์œ ๋Ÿฝ, 2-๋ฏธ๊ตญ, 3-์•„์‹œ์•„, 4-์•„ํ”„๋ฆฌ์นด(์กฐ์ธ ์—†์Œ)
๊ฒฐ์ •

SELECT country_name country,
       DECODE (region_id,
               1, 'Europe',
               2, 'America',
               3, 'Asia',
               4, 'Africa',
               'Unknown')
           region
  FROM countries;

SELECT country_name
           country,
       CASE region_id
           WHEN 1 THEN 'Europe'
           WHEN 2 THEN 'America'
           WHEN 3 THEN 'Asia'
           WHEN 4 THEN 'Africa'
           ELSE 'Unknown'
       END
           region
  FROM countries;

๊ทธ๋ฃน ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ง‘๊ณ„๋œ ๋ฐ์ดํ„ฐ ๋ณด๊ณ 

์ง์› ํ…Œ์ด๋ธ”. ์ตœ์†Œ ๋ฐ ์ตœ๋Œ€ ๊ธ‰์—ฌ, ์กฐ๊ธฐ ๋„์ฐฉ ๋ฐ ์ง€์—ฐ ๋„์ฐฉ ๋‚ ์งœ, ์ง์› ์ˆ˜์™€ ํ•จ๊ป˜ department_id๋ณ„๋กœ ๋ณด๊ณ ์„œ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ์ง์› ์ˆ˜๋กœ ์ •๋ ฌ(desc)
๊ฒฐ์ •

  SELECT department_id,
         MIN (salary) min_salary,
         MAX (salary) max_salary,
         MIN (hire_date) min_hire_date,
         MAX (hire_date) max_hire_Date,
         COUNT (*) count
    FROM employees
GROUP BY department_id
order by count(*) desc;

์ง์› ํ…Œ์ด๋ธ”. ์ด๋ฆ„์ด ๊ฐ™์€ ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ง์›์€ ๋ช‡ ๋ช…์ž…๋‹ˆ๊นŒ? ์ˆ˜๋Ÿ‰๋ณ„๋กœ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค. ์ˆซ์ž๊ฐ€ 1๋ณด๋‹ค ํฐ ํ•ญ๋ชฉ๋งŒ ํ‘œ์‹œ
๊ฒฐ์ •

SELECT SUBSTR (first_name, 1, 1) first_char, COUNT (*)
    FROM employees
GROUP BY SUBSTR (first_name, 1, 1)
  HAVING COUNT (*) > 1
ORDER BY 2 DESC;

์ง์› ํ…Œ์ด๋ธ”. ๊ฐ™์€ ๋ถ€์„œ์—์„œ ์ผํ•˜๊ณ  ๊ฐ™์€ ๊ธ‰์—ฌ๋ฅผ ๋ฐ›๋Š” ์ง์›์€ ๋ช‡ ๋ช…์ž…๋‹ˆ๊นŒ?
๊ฒฐ์ •

SELECT department_id, salary, COUNT (*)
    FROM employees
GROUP BY department_id, salary
  HAVING COUNT (*) > 1;

์ง์› ํ…Œ์ด๋ธ”. ๊ฐ ์š”์ผ์— ๊ณ ์šฉ๋œ ์ง์› ์ˆ˜์— ๋Œ€ํ•œ ๋ณด๊ณ ์„œ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ์ˆ˜๋Ÿ‰๋ณ„๋กœ ์ •๋ ฌ
๊ฒฐ์ •

SELECT TO_CHAR (hire_Date, 'Day') day, COUNT (*)
    FROM employees
GROUP BY TO_CHAR (hire_Date, 'Day')
ORDER BY 2 DESC;

์ง์› ํ…Œ์ด๋ธ”. ์—ฐ๋„๋ณ„๋กœ ๊ณ ์šฉ๋œ ์ง์› ์ˆ˜์— ๋Œ€ํ•œ ๋ณด๊ณ ์„œ๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค. ์ˆ˜๋Ÿ‰๋ณ„๋กœ ์ •๋ ฌ
๊ฒฐ์ •

SELECT TO_CHAR (hire_date, 'YYYY') year, COUNT (*)
    FROM employees
GROUP BY TO_CHAR (hire_date, 'YYYY');

์ง์› ํ…Œ์ด๋ธ”. ์ง์›์ด ์žˆ๋Š” ๋ถ€์„œ ์ˆ˜ ๊ฐ€์ ธ์˜ค๊ธฐ
๊ฒฐ์ •

SELECT COUNT (COUNT (*))     department_count
    FROM employees
   WHERE department_id IS NOT NULL
GROUP BY department_id;

์ง์› ํ…Œ์ด๋ธ”. ์ง์›์ด 30๋ช… ์ด์ƒ์ธ department_id ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ
๊ฒฐ์ •

  SELECT department_id
    FROM employees
GROUP BY department_id
  HAVING COUNT (*) > 30;

์ง์› ํ…Œ์ด๋ธ”. ๋ถ€์„œ_ID ๋ชฉ๋ก๊ณผ ๊ฐ ๋ถ€์„œ ์ง์›์˜ ๋ฐ˜์˜ฌ๋ฆผ๋œ ํ‰๊ท  ๊ธ‰์—ฌ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
๊ฒฐ์ •

  SELECT department_id, ROUND (AVG (salary)) avg_salary
    FROM employees
GROUP BY department_id;

๊ตญ๊ฐ€ ํ…Œ์ด๋ธ”. 60๊ฐœ ์ด์ƒ์˜ ๋ชจ๋“  country_names์˜ ๋ชจ๋“  ๋ฌธ์ž์˜ region_id ํ•ฉ๊ณ„ ๋ชฉ๋ก์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
๊ฒฐ์ •

  SELECT region_id
    FROM countries
GROUP BY region_id
  HAVING SUM (LENGTH (country_name)) > 60;

์ง์› ํ…Œ์ด๋ธ”. ์—ฌ๋Ÿฌ(>1) job_id์˜ ์ง์›์ด ๊ทผ๋ฌดํ•˜๋Š” department_id ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ
๊ฒฐ์ •

  SELECT department_id
    FROM employees
GROUP BY department_id
  HAVING COUNT (DISTINCT job_id) > 1;

์ง์› ํ…Œ์ด๋ธ”. ๋ถ€ํ•˜ ์ง์›์˜ ์ˆ˜๊ฐ€ 5๋ณด๋‹ค ํฌ๊ณ  ๋ถ€ํ•˜ ์ง์›์˜ ๋ชจ๋“  ๊ธ‰์—ฌ ํ•ฉ๊ณ„๊ฐ€ 50000๋ณด๋‹ค ํฐ manager_id์˜ ๋ชฉ๋ก์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
๊ฒฐ์ •

  SELECT manager_id
    FROM employees
GROUP BY manager_id
  HAVING COUNT (*) > 5 AND SUM (salary) > 50000;

์ง์› ํ…Œ์ด๋ธ”. ๋ชจ๋“  ๋ถ€ํ•˜ ์ง์›์˜ ํ‰๊ท  ๊ธ‰์—ฌ๊ฐ€ 6000์—์„œ 9000 ์‚ฌ์ด์ด๊ณ  ๋ณด๋„ˆ์Šค๋ฅผ ๋ฐ›์ง€ ์•Š๋Š” manager_id ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ(commission_pct๋Š” ๋น„์–ด ์žˆ์Œ)
๊ฒฐ์ •

  SELECT manager_id, AVG (salary) avg_salary
    FROM employees
   WHERE commission_pct IS NULL
GROUP BY manager_id
  HAVING AVG (salary) BETWEEN 6000 AND 9000;

์ง์› ํ…Œ์ด๋ธ”. 'CLERK'๋ผ๋Š” ๋‹จ์–ด๋กœ ๋๋‚˜๋Š” ๋ชจ๋“  ์ง์› job_id์—์„œ ์ตœ๋Œ€ ๊ธ‰์—ฌ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
๊ฒฐ์ •

SELECT MAX (salary) max_salary
  FROM employees
 WHERE job_id LIKE '%CLERK';

SELECT MAX (salary) max_salary
  FROM employees
 WHERE SUBSTR (job_id, -5) = 'CLERK';

์ง์› ํ…Œ์ด๋ธ”. ๋ถ€์„œ์˜ ๋ชจ๋“  ํ‰๊ท  ๊ธ‰์—ฌ ์ค‘ ์ตœ๋Œ€ ๊ธ‰์—ฌ๋ฅผ ๋ฐ›์œผ์‹ญ์‹œ์˜ค.
๊ฒฐ์ •

  SELECT MAX (AVG (salary))
    FROM employees
GROUP BY department_id;

์ง์› ํ…Œ์ด๋ธ”. ์ด๋ฆ„์˜ ๋ฌธ์ž ์ˆ˜๊ฐ€ ๊ฐ™์€ ์ง์› ์ˆ˜๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ๋™์‹œ์— ์ด๋ฆ„์ด 5๋ณด๋‹ค ๊ธธ๊ณ  ๊ฐ™์€ ์ด๋ฆ„์„ ๊ฐ€์ง„ ์ง์›์ด 20๋ช… ์ด์ƒ์ธ ์‚ฌ๋žŒ๋งŒ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฆ„ ๊ธธ์ด๋กœ ์ •๋ ฌ
๊ฒฐ์ •

  SELECT LENGTH (first_name), COUNT (*)
    FROM employees
GROUP BY LENGTH (first_name)
  HAVING LENGTH (first_name) > 5 AND COUNT (*) > 20
ORDER BY LENGTH (first_name);

  SELECT LENGTH (first_name), COUNT (*)
    FROM employees
   WHERE LENGTH (first_name) > 5
GROUP BY LENGTH (first_name)
  HAVING COUNT (*) > 20
ORDER BY LENGTH (first_name);

์กฐ์ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ ํ‘œ์‹œ

ํ…Œ์ด๋ธ” ์ง์›, ๋ถ€์„œ, ์œ„์น˜, ๊ตญ๊ฐ€, ์ง€์—ญ. ์ง€์—ญ ๋ชฉ๋ก ๋ฐ ๊ฐ ์ง€์—ญ์˜ ์ง์› ์ˆ˜ ๊ฐ€์ ธ์˜ค๊ธฐ
๊ฒฐ์ •

  SELECT region_name, COUNT (*)
    FROM employees e
         JOIN departments d ON (e.department_id = d.department_id)
         JOIN locations l ON (d.location_id = l.location_id)
         JOIN countries c ON (l.country_id = c.country_id)
         JOIN regions r ON (c.region_id = r.region_id)
GROUP BY region_name;

ํ…Œ์ด๋ธ” ์ง์›, ๋ถ€์„œ, ์œ„์น˜, ๊ตญ๊ฐ€, ์ง€์—ญ. ๊ฐ ์ง์›์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ •๋ณด ์–ป๊ธฐ:
์ด๋ฆ„, ์„ฑ, ๋ถ€์„œ, ์ง์—…, ๊ฑฐ๋ฆฌ, ๊ตญ๊ฐ€, ์ง€์—ญ
๊ฒฐ์ •

SELECT First_name,
       Last_name,
       Department_name,
       Job_id,
       street_address,
       Country_name,
       Region_name
  FROM employees  e
       JOIN departments d ON (e.department_id = d.department_id)
       JOIN locations l ON (d.location_id = l.location_id)
       JOIN countries c ON (l.country_id = c.country_id)
       JOIN regions r ON (c.region_id = r.region_id);

์ง์› ํ…Œ์ด๋ธ”. ์ง์›์ด 6๋ช… ์ด์ƒ์ธ ๋ชจ๋“  ๊ด€๋ฆฌ์ž ํ‘œ์‹œ
๊ฒฐ์ •

  SELECT man.first_name, COUNT (*)
    FROM employees emp JOIN employees man ON (emp.manager_id = man.employee_id)
GROUP BY man.first_name
  HAVING COUNT (*) > 6;

์ง์› ํ…Œ์ด๋ธ”. ๋ˆ„๊ตฌ์—๊ฒŒ๋„ ๋ณด๊ณ ํ•˜์ง€ ์•Š๋Š” ๋ชจ๋“  ์ง์› ํ‘œ์‹œ
๊ฒฐ์ •

SELECT emp.first_name
  FROM employees  emp
       LEFT JOIN employees man ON (emp.manager_id = man.employee_id)
 WHERE man.FIRST_NAME IS NULL;

SELECT first_name
  FROM employees
 WHERE manager_id IS NULL;

์ง์› ํ…Œ์ด๋ธ”, Job_history. Employee ํ…Œ์ด๋ธ”์€ ๋ชจ๋“  ์ง์›์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. Job_history ํ…Œ์ด๋ธ”์€ ํ‡ด์‚ฌํ•œ ์ง์›์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์ง์› ๋ฐ ํšŒ์‚ฌ ๋‚ด ์ƒํƒœ์— ๋Œ€ํ•œ ๋ณด๊ณ ์„œ ๋ฐ›๊ธฐ (ํ‡ด์‚ฌ ๋‚ ์งœ๋กœ ํšŒ์‚ฌ๋ฅผ ๋– ๋‚˜๊ฑฐ๋‚˜ ํ‡ด์‚ฌ)
์˜ˆ :
์ด๋ฆ„ | ์ƒํƒœ
์ œ๋‹ˆํผ | 31๋…„ 2006์›” XNUMX์ผ ํ‡ด์‚ฌ
ํด๋ผ๋ผ | ํ˜„์žฌ ์ผํ•˜๊ณ  ์žˆ์Œ
๊ฒฐ์ •

SELECT first_name,
       NVL2 (
           end_date,
           TO_CHAR (end_date, 'fm""Left the company at"" DD ""of"" Month, YYYY'),
           'Currently Working')
           status
  FROM employees e LEFT JOIN job_history j ON (e.employee_id = j.employee_id);

ํ…Œ์ด๋ธ” ์ง์›, ๋ถ€์„œ, ์œ„์น˜, ๊ตญ๊ฐ€, ์ง€์—ญ. ์œ ๋Ÿฝ(region_name)์— ๊ฑฐ์ฃผํ•˜๋Š” ์ง์› ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ
๊ฒฐ์ •

 SELECT first_name
  FROM employees
       JOIN departments USING (department_id)
       JOIN locations USING (location_id)
       JOIN countries USING (country_id)
       JOIN regions USING (region_id)
 WHERE region_name = 'Europe';
 
 SELECT first_name
  FROM employees  e
       JOIN departments d ON (e.department_id = d.department_id)
       JOIN locations l ON (d.location_id = l.location_id)
       JOIN countries c ON (l.country_id = c.country_id)
       JOIN regions r ON (c.region_id = r.region_id)
 WHERE region_name = 'Europe';

ํ…Œ์ด๋ธ” ์ง์›, ๋ถ€์„œ. ์ง์›์ด 30๋ช… ์ด์ƒ์ธ ๋ชจ๋“  ๋ถ€์„œ ํ‘œ์‹œ
๊ฒฐ์ •

SELECT department_name, COUNT (*)
    FROM employees e JOIN departments d ON (e.department_id = d.department_id)
GROUP BY department_name
  HAVING COUNT (*) > 30;

ํ…Œ์ด๋ธ” ์ง์›, ๋ถ€์„œ. ๋ถ€์„œ์— ์†ํ•˜์ง€ ์•Š์€ ๋ชจ๋“  ์ง์› ํ‘œ์‹œ
๊ฒฐ์ •

SELECT first_name
  FROM employees  e
       LEFT JOIN departments d ON (e.department_id = d.department_id)
 WHERE d.department_name IS NULL;

SELECT first_name
  FROM employees
 WHERE department_id IS NULL;

ํ…Œ์ด๋ธ” ์ง์›, ๋ถ€์„œ. ์ง์›์ด ์—†๋Š” ๋ชจ๋“  ๋ถ€์„œ ํ‘œ์‹œ
๊ฒฐ์ •

SELECT department_name
  FROM employees  e
       RIGHT JOIN departments d ON (e.department_id = d.department_id)
 WHERE first_name IS NULL;

์ง์› ํ…Œ์ด๋ธ”. ๋ถ€ํ•˜ ์ง์›์ด ์—†๋Š” ๋ชจ๋“  ์ง์› ํ‘œ์‹œ
๊ฒฐ์ •

SELECT man.first_name
  FROM employees  emp
       RIGHT JOIN employees man ON (emp.manager_id = man.employee_id)
 WHERE emp.FIRST_NAME IS NULL;

ํ…Œ์ด๋ธ” ์ง์›, ์ž‘์—…, ๋ถ€์„œ. First_name, Job_title, Department_name ํ˜•์‹์œผ๋กœ ์ง์›์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
์˜ˆ :
์ด๋ฆ„ | ์ง์œ„ | ๋ถ€์„œ ์ด๋ฆ„
๋„๋„๋“œ | ๋ฐฐ์†ก | ์ ์› ๋ฐฐ์†ก
๊ฒฐ์ •

SELECT first_name, job_title, department_name
  FROM employees  e
       JOIN jobs j ON (e.job_id = j.job_id)
       JOIN departments d ON (d.department_id = e.department_id);

์ง์› ํ…Œ์ด๋ธ”. ๊ด€๋ฆฌ์ž๊ฐ€ 2005๋…„์— ์ผ์ž๋ฆฌ๋ฅผ ์–ป์—ˆ์ง€๋งŒ ๋™์‹œ์— ์ด ๊ทผ๋กœ์ž ์ž์‹ ๋„ 2005๋…„ ์ด์ „์— ์ผ์ž๋ฆฌ๋ฅผ ์–ป์€ ์ง์› ๋ชฉ๋ก์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
๊ฒฐ์ •

SELECT emp.*
  FROM employees emp JOIN employees man ON (emp.manager_id = man.employee_id)
 WHERE     TO_CHAR (man.hire_date, 'YYYY') = '2005'
       AND emp.hire_date < TO_DATE ('01012005', 'DDMMYYYY');

์ง์› ํ…Œ์ด๋ธ”. ๊ด€๋ฆฌ์ž๊ฐ€ 15์›”์— ์ผ์ž๋ฆฌ๋ฅผ ์–ป์—ˆ๊ณ  ์ด ์ง์›์˜ job_title ๊ธธ์ด๊ฐ€ XNUMX์ž ์ด์ƒ์ธ ์ง์› ๋ชฉ๋ก์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
๊ฒฐ์ •

SELECT emp.*
  FROM employees  emp
       JOIN employees man ON (emp.manager_id = man.employee_id)
       JOIN jobs j ON (emp.job_id = j.job_id)
 WHERE TO_CHAR (man.hire_date, 'MM') = '01' AND LENGTH (j.job_title) > 15;

ํ•˜์œ„ ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฟผ๋ฆฌ ํ•ด๊ฒฐ

์ง์› ํ…Œ์ด๋ธ”. ๊ฐ€์žฅ ๊ธด ์ด๋ฆ„์„ ๊ฐ€์ง„ ์ง์› ๋ชฉ๋ก์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
๊ฒฐ์ •

SELECT *
  FROM employees
 WHERE LENGTH (first_name) =
       (SELECT MAX (LENGTH (first_name)) FROM employees);

์ง์› ํ…Œ์ด๋ธ”. ๋ชจ๋“  ์ง์›์˜ ํ‰๊ท  ๊ธ‰์—ฌ๋ณด๋‹ค ๋†’์€ ๊ธ‰์—ฌ๋ฅผ ๋ฐ›๋Š” ์ง์› ๋ชฉ๋ก์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
๊ฒฐ์ •

SELECT *
  FROM employees
 WHERE salary > (SELECT AVG (salary) FROM employees);

ํ…Œ์ด๋ธ” ์ง์›, ๋ถ€์„œ, ์œ„์น˜. ์ง์›์ด ์ด ์†Œ๋“์ด ๊ฐ€์žฅ ์ ์€ ๋„์‹œ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
๊ฒฐ์ •

SELECT city
    FROM employees e
         JOIN departments d ON (e.department_id = d.department_id)
         JOIN locations l ON (d.location_id = l.location_id)
GROUP BY city
  HAVING SUM (salary) =
         (  SELECT MIN (SUM (salary))
              FROM employees e
                   JOIN departments d ON (e.department_id = d.department_id)
                   JOIN locations l ON (d.location_id = l.location_id)
          GROUP BY city);

์ง์› ํ…Œ์ด๋ธ”. ๊ด€๋ฆฌ์ž๊ฐ€ 15000 ์ด์ƒ์˜ ๊ธ‰์—ฌ๋ฅผ ๋ฐ›๋Š” ์ง์› ๋ชฉ๋ก์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
๊ฒฐ์ •

SELECT *
  FROM employees
 WHERE manager_id IN (SELECT employee_id
                        FROM employees
                       WHERE salary > 15000)

ํ…Œ์ด๋ธ” ์ง์›, ๋ถ€์„œ. ์ง์›์ด ์—†๋Š” ๋ชจ๋“  ๋ถ€์„œ ํ‘œ์‹œ
๊ฒฐ์ •

SELECT *
  FROM departments
 WHERE department_id NOT IN (SELECT department_id
                               FROM employees
                              WHERE department_id IS NOT NULL);

์ง์› ํ…Œ์ด๋ธ”. ๊ด€๋ฆฌ์ž๊ฐ€ ์•„๋‹Œ ๋ชจ๋“  ์ง์› ํ‘œ์‹œ
๊ฒฐ์ •

SELECT *
  FROM employees
 WHERE employee_id NOT IN (SELECT manager_id
                             FROM employees
                            WHERE manager_id IS NOT NULL)

์ง์› ํ…Œ์ด๋ธ”. ์ง์›์ด 6๋ช… ์ด์ƒ์ธ ๋ชจ๋“  ๊ด€๋ฆฌ์ž ํ‘œ์‹œ
๊ฒฐ์ •

SELECT *
  FROM employees e
 WHERE (SELECT COUNT (*)
          FROM employees
         WHERE manager_id = e.employee_id) > 6;

ํ…Œ์ด๋ธ” ์ง์›, ๋ถ€์„œ. IT ๋ถ€์„œ์—์„œ ๊ทผ๋ฌดํ•˜๋Š” ์ง์› ํ‘œ์‹œ
๊ฒฐ์ •

SELECT *
  FROM employees
 WHERE department_id = (SELECT department_id
                          FROM departments
                         WHERE department_name = 'IT');

ํ…Œ์ด๋ธ” ์ง์›, ์ž‘์—…, ๋ถ€์„œ. First_name, Job_title, Department_name ํ˜•์‹์œผ๋กœ ์ง์›์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
์˜ˆ :
์ด๋ฆ„ | ์ง์œ„ | ๋ถ€์„œ ์ด๋ฆ„
๋„๋„๋“œ | ๋ฐฐ์†ก | ์ ์› ๋ฐฐ์†ก
๊ฒฐ์ •

SELECT first_name,
       (SELECT job_title
          FROM jobs
         WHERE job_id = e.job_id)
           job_title,
       (SELECT department_name
          FROM departments
         WHERE department_id = e.department_id)
           department_name
  FROM employees e;

์ง์› ํ…Œ์ด๋ธ”. ๊ด€๋ฆฌ์ž๊ฐ€ 2005๋…„์— ์ผ์ž๋ฆฌ๋ฅผ ์–ป์—ˆ์ง€๋งŒ ๋™์‹œ์— ์ด ๊ทผ๋กœ์ž ์ž์‹ ๋„ 2005๋…„ ์ด์ „์— ์ผ์ž๋ฆฌ๋ฅผ ์–ป์€ ์ง์› ๋ชฉ๋ก์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
๊ฒฐ์ •

SELECT *
  FROM employees
 WHERE     manager_id IN (SELECT employee_id
                            FROM employees
                           WHERE TO_CHAR (hire_date, 'YYYY') = '2005')
       AND hire_date < TO_DATE ('01012005', 'DDMMYYYY');

์ง์› ํ…Œ์ด๋ธ”. ๊ด€๋ฆฌ์ž๊ฐ€ 15์›”์— ์ผ์ž๋ฆฌ๋ฅผ ์–ป์—ˆ๊ณ  ์ด ์ง์›์˜ job_title ๊ธธ์ด๊ฐ€ XNUMX์ž ์ด์ƒ์ธ ์ง์› ๋ชฉ๋ก์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
๊ฒฐ์ •

SELECT *
  FROM employees e
 WHERE     manager_id IN (SELECT employee_id
                            FROM employees
                           WHERE TO_CHAR (hire_date, 'MM') = '01')
       AND (SELECT LENGTH (job_title)
              FROM jobs
             WHERE job_id = e.job_id) > 15;

๊ทธ๊ฒŒ ๋‹ค์•ผ.

์ž‘์—…์ด ํฅ๋ฏธ๋กญ๊ณ  ํฅ๋ฏธ๋กœ์› ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.
์ด ๋ชฉ๋ก์— ๊ฐ€๋Šฅํ•œ ํ•œ ๋งŽ์ด ์ถ”๊ฐ€ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
๋‚˜๋Š” ๋˜ํ•œ ๋ชจ๋“  ์˜๊ฒฌ๊ณผ ์ œ์•ˆ์— ๊ธฐ๋ปํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ถ”์‹ : ๋ˆ„๊ตฐ๊ฐ€ SELECT์—์„œ ํฅ๋ฏธ๋กœ์šด ์ž‘์—…์„ ์ œ์‹œํ•˜๋ฉด ๋Œ“๊ธ€์„ ์ž‘์„ฑํ•ด ์ฃผ์‹œ๋ฉด ๋ชฉ๋ก์— ์ถ”๊ฐ€ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€