SQL. เดฐเดธเด•เดฐเดฎเดพเดฏ เดชเดธเดฟเดฒเตเด•เตพ

เดนเดฒเต‹, เดนเดฌเตเตผ!

3 เดตเตผเดทเดคเตเดคเดฟเดฒเต‡เดฑเต†เดฏเดพเดฏเดฟ เดžเดพเตป เดตเดฟเดตเดฟเดง เดชเดฐเดฟเดถเต€เดฒเดจ เด•เต‡เดจเตเดฆเตเดฐเด™เตเด™เดณเดฟเตฝ SQL เดชเด เดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต, เดŽเดจเตเดฑเต† เดจเดฟเดฐเต€เด•เตเดทเดฃเด™เตเด™เดณเดฟเตฝ เด’เดจเตเดจเต, เดตเดฟเดฆเตเดฏเดพเตผเดคเตเดฅเดฟเด•เตพเด•เตเด•เต เด’เดฐเต เดŸเดพเดธเตโ€Œเด•เต เดจเตฝเด•เดฟเดฏเดพเตฝ SQL เดจเดจเตเดจเดพเดฏเดฟ เดฎเดจเดธเดฟเดฒเดพเด•เตเด•เตเด•เดฏเตเด‚ เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต, เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ เดธเดพเดงเตเดฏเดคเด•เดณเต†เดฏเตเด‚ เดธเตˆเดฆเตเดงเดพเดจเตเดคเดฟเด• เด…เดŸเดฟเดคเตเดคเดฑเดฏเต†เดฏเตเด‚ เด•เตเดฑเดฟเดšเตเดšเต เดชเดฑเดฏเดฐเตเดคเต.

เดˆ เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ, เดžเดพเตป เดตเดฟเดฆเตเดฏเดพเตผเดคเตเดฅเดฟเด•เตพเด•เตเด•เต เด—เตƒเดนเดชเดพเด เดฎเดพเดฏเดฟ เดจเตฝเด•เตเดจเตเดจ เดŽเดจเตเดฑเต† เดชเตเดฐเดถเตเดจเด™เตเด™เดณเตเดŸเต† เดฒเดฟเดธเตเดฑเตเดฑเต เดจเดฟเด™เตเด™เดณเตเดฎเดพเดฏเดฟ เดชเด™เตเด•เดฟเดŸเตเด‚, เด’เดชเตเดชเด‚ เดžเด™เตเด™เตพ เดตเดฟเดตเดฟเดง เดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เดฎเดธเตเดคเดฟเดทเตเด•เดชเตเดฐเด•เตเดทเต‹เดญเด™เตเด™เตพ เดจเดŸเดคเตเดคเตเดจเตเดจเต, เด‡เดคเต SQL-เดจเต† เด•เตเดฑเดฟเดšเตเดšเต เด†เดดเดคเตเดคเดฟเดฒเตเดณเตเดณเดคเตเด‚ เดตเตเดฏเด•เตเดคเดตเตเดฎเดพเดฏ เดงเดพเดฐเดฃเดฏเดฟเดฒเต‡เด•เตเด•เต เดจเดฏเดฟเด•เตเด•เตเดจเตเดจเต.

SQL. เดฐเดธเด•เดฐเดฎเดพเดฏ เดชเดธเดฟเดฒเตเด•เตพ

SQL (หˆษ›sหˆkjuหˆษ›l; เด‡เด‚เด—เตเดฒเต€เดทเต เด˜เดŸเดจเดพเดชเดฐเดฎเดพเดฏ เด…เดจเตเดตเต‡เดทเดฃ เดญเดพเดท) เด’เดฐเต เด‰เดšเดฟเดคเดฎเดพเดฏ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดฎเดพเดจเต‡เดœเตเดฎเต†เดจเตเดฑเต เดธเดฟเดธเตเดฑเตเดฑเด‚ เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดฑเดฟเดฒเต‡เดทเดฃเตฝ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเตฝ เดกเดพเดฑเตเดฑ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เดชเดฐเดฟเดทเตโ€Œเด•เตเด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดกเดฟเด•เตเดฒเดฑเต‡เดฑเตเดฑเต€เดตเต เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเด‚เด—เต เดญเดพเดทเดฏเดพเดฃเต. เด•เต‚เดŸเตเดคเดฒเต เดตเดพเดฏเดฟเด•เตเด•เตเด•โ€ฆ

เดจเดฟเด™เตเด™เตพเด•เตเด•เต SQL-เดจเต† เด•เตเดฑเดฟเดšเตเดšเต เดชเดฒเดคเดฐเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเตเด‚ เดตเดพเดฏเดฟเด•เตเด•เดพเด‚ เด‰เดฑเดตเดฟเดŸเด™เตเด™เตพ.
เดˆ เดฒเต‡เด–เดจเด‚ เดจเดฟเด™เตเด™เดณเต† เด†เดฆเตเดฏเด‚ เดฎเตเดคเตฝ SQL เดชเด เดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เด‰เดฆเตเดฆเต‡เดถเดฟเดšเตเดšเตเดณเตเดณเดคเดฒเตเดฒ.

เด…เดคเตเด•เตŠเดฃเตเดŸเต เดจเดฎเตเด•เตเด•เต เดชเต‹เด•เดพเด‚.

เดžเด™เตเด™เตพ เด…เดฑเดฟเดฏเดชเตเดชเต†เดŸเตเดจเตเดจเดคเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด‚ เดŽเดšเตเดšเตเด†เตผ เดกเดฏเด—เตเดฐเด‚ เด’เดฑเดพเด•เตเด•เดฟเดณเดฟเตฝ เด…เดคเดฟเดจเตเดฑเต† เดŸเต‡เดฌเดฟเดณเตเด•เตพ (เด•เต‚เดŸเตเดคเตฝ):

SQL. เดฐเดธเด•เดฐเดฎเดพเดฏ เดชเดธเดฟเดฒเตเด•เตพ
SELECT เดŸเดพเดธเตโ€Œเด•เตเด•เตเด•เตพ เดฎเดพเดคเตเดฐเดฎเต‡ เดžเด™เตเด™เตพ เดชเดฐเดฟเด—เดฃเดฟเด•เตเด•เต‚ เดŽเดจเตเดจเต เดžเดพเตป เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เตเดจเตเดจเต. เด‡เดตเดฟเดŸเต† DML เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ DDL เดŸเดพเดธเตโ€Œเด•เตเด•เตเด•เดณเตŠเดจเตเดจเตเดฎเดฟเดฒเตเดฒ.

เดšเตเดฎเดคเดฒเด•เตพ

เดกเดพเดฑเตเดฑ เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด…เดŸเตเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต

เดœเต€เดตเดจเด•เตเด•เดพเดฐเตเดŸเต† เดชเดŸเตเดŸเดฟเด•. เดŽเดฒเตเดฒเดพ เดœเต€เดตเดจเด•เตเด•เดพเดฐเต†เดฏเตเด‚ เด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดตเดฟเดตเดฐเด™เตเด™เดณเตเดณเตเดณ เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดจเต‡เดŸเตเด•
เดคเต€เดฐเตเดฎเดพเดจเด‚

SELECT * FROM employees

เดœเต€เดตเดจเด•เตเด•เดพเดฐเตเดŸเต† เดชเดŸเตเดŸเดฟเด•. 'เดกเต‡เดตเดฟเดกเต' เดŽเดจเตเดจเต เดชเต‡เดฐเตเดณเตเดณ เดŽเดฒเตเดฒเดพ เดœเต€เดตเดจเด•เตเด•เดพเดฐเตเดŸเต†เดฏเตเด‚ เดฒเดฟเดธเตเดฑเตเดฑเต เดจเต‡เดŸเตเด•
เดคเต€เดฐเตเดฎเดพเดจเด‚

SELECT *
  FROM employees
 WHERE first_name = 'David';

เดœเต€เดตเดจเด•เตเด•เดพเดฐเตเดŸเต† เดชเดŸเตเดŸเดฟเด•. 'IT_PROG'-เดจเต เดคเตเดฒเตเดฏเดฎเดพเดฏ job_id เด‰เดณเตเดณ เดŽเดฒเตเดฒเดพ เดœเต€เดตเดจเด•เตเด•เดพเดฐเตเดŸเต†เดฏเตเด‚ เดฒเดฟเดธเตเดฑเตเดฑเต เดจเต‡เดŸเตเด•
เดคเต€เดฐเตเดฎเดพเดจเด‚

SELECT *
  FROM employees
 WHERE job_id = 'IT_PROG'

เดœเต€เดตเดจเด•เตเด•เดพเดฐเตเดŸเต† เดชเดŸเตเดŸเดฟเด•. 50-เดคเตเดคเดฟเตฝ เด•เต‚เดŸเตเดคเตฝ เดถเดฎเตเดชเดณเดฎเตเดณเตเดณ (เดถเดฎเตเดชเดณเด‚) 4000-เดพเดฎเดคเตเดคเต† เดตเด•เตเดชเตเดชเดฟเตฝ (เดกเดฟเดชเตเดชเดพเตผเดŸเตเดŸเตเดฎเต†เดจเตเดฑเต_เดเดกเดฟ) เดŽเดฒเตเดฒเดพ เดœเต€เดตเดจเด•เตเด•เดพเดฐเตเดŸเต†เดฏเตเด‚ เดฒเดฟเดธเตเดฑเตเดฑเต เดจเต‡เดŸเตเด•
เดคเต€เดฐเตเดฎเดพเดจเด‚

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) เดŽเดฒเตเดฒเดพ เดœเต€เดตเดจเด•เตเด•เดพเดฐเตเดŸเต†เดฏเตเด‚ เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดจเต‡เดŸเตเด• (เด•เดฎเตเดฎเต€เดทเตป_pct เด•เต‹เดณเดคเตเดคเดฟเดฒเต† เดฎเต‚เดฒเตเดฏเด‚ เดถเต‚เดจเตเดฏเดฎเดฒเตเดฒ)
เดคเต€เดฐเตเดฎเดพเดจเด‚

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

เดœเต€เดตเดจเด•เตเด•เดพเดฐเตเดŸเต† เดชเดŸเตเดŸเดฟเด•. เด•เตเดฑเดžเตเดžเดคเต 2 เด…เด•เตเดทเดฐเด™เตเด™เตพ 'n' เด…เดŸเด™เตเด™เดฟเดฏ เดŽเดฒเตเดฒเดพ เดœเต€เดตเดจเด•เตเด•เดพเดฐเตเดŸเต†เดฏเตเด‚ เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดจเต‡เดŸเตเด•
เดคเต€เดฐเตเดฎเดพเดจเด‚

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 '';

เดœเต€เดตเดจเด•เตเด•เดพเดฐเตเดŸเต† เดชเดŸเตเดŸเดฟเด•. เดŽเดฒเตเดฒเดพ เดฎเดพเดจเต‡เดœเตผ เดเดกเดฟเด•เดณเตเดŸเต†เดฏเตเด‚ เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดจเต‡เดŸเตเด•
เดคเต€เดฐเตเดฎเดพเดจเด‚

SELECT DISTINCT manager_id
  FROM employees
 WHERE manager_id IS NOT NULL;

เดœเต€เดตเดจเด•เตเด•เดพเดฐเตเดŸเต† เดชเดŸเตเดŸเดฟเด•. เดœเต€เดตเดจเด•เตเด•เดพเดฐเตเดŸเต† เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เด…เดตเดฐเตเดŸเต† เดธเตเดฅเดพเดจเด™เตเด™เดณเตเดณเตเดณ เดซเต‹เตผเดฎเดพเดฑเตเดฑเดฟเตฝ เดจเต‡เดŸเตเด•: เดกเตŠเดฃเดพเตพเดกเต(sh_clerk)
เดคเต€เดฐเตเดฎเดพเดจเด‚

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

เด”เดŸเตเดŸเตโ€ŒเดชเตเดŸเตเดŸเต เด‡เดทเตโ€ŒเดŸเดพเดจเตเดธเตƒเดคเดฎเดพเด•เตเด•เดพเตป เดธเดฟเด‚เด—เดฟเตพ-เดฑเต‹ เดซเด‚เด—เตโ€Œเดทเดจเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต

เดœเต€เดตเดจเด•เตเด•เดพเดฐเตเดŸเต† เดชเดŸเตเดŸเดฟเด•. 10 เด…เด•เตเดทเดฐเด™เตเด™เดณเดฟเตฝ เด•เต‚เดŸเตเดคเตฝ เดจเต€เดณเดฎเตเดณเตเดณ เดŽเดฒเตเดฒเดพ เดœเต€เดตเดจเด•เตเด•เดพเดฐเตเดŸเต†เดฏเตเด‚ เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดจเต‡เดŸเตเด•
เดคเต€เดฐเตเดฎเดพเดจเด‚

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

เดœเต€เดตเดจเด•เตเด•เดพเดฐเตเดŸเต† เดชเดŸเตเดŸเดฟเด•. เดชเต‡เดฐเดฟเตฝ 'เดฌเดฟ' เดŽเดจเตเดจ เด…เด•เตเดทเดฐเด‚ เด‰เดณเตเดณ เดŽเดฒเตเดฒเดพ เดœเต€เดตเดจเด•เตเด•เดพเดฐเตเดŸเต†เดฏเตเด‚ เดฒเดฟเดธเตเดฑเตเดฑเต เดจเต‡เดŸเตเด• (เด•เต‡เดธเต เดธเต†เตปเดธเดฟเดฑเตเดฑเต€เดตเต)
เดคเต€เดฐเตเดฎเดพเดจเด‚

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

เดœเต€เดตเดจเด•เตเด•เดพเดฐเตเดŸเต† เดชเดŸเตเดŸเดฟเด•. เดชเต‡เดฐเตเด•เดณเดฟเตฝ เด•เตเดฑเดžเตเดžเดคเต 2 เด…เด•เตเดทเดฐเด™เตเด™เตพ 'a' เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดŽเดฒเตเดฒเดพ เดœเต€เดตเดจเด•เตเด•เดพเดฐเตเดŸเต†เดฏเตเด‚ เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดจเต‡เดŸเตเด•
เดคเต€เดฐเตเดฎเดพเดจเด‚

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

เดœเต€เดตเดจเด•เตเด•เดพเดฐเตเดŸเต† เดชเดŸเตเดŸเดฟเด•. 1000-เดจเตเดฑเต† เด—เตเดฃเดฟเดค เดถเดฎเตเดชเดณเดฎเตเดณเตเดณ เดŽเดฒเตเดฒเดพ เดœเต€เดตเดจเด•เตเด•เดพเดฐเตเดŸเต†เดฏเตเด‚ เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดจเต‡เดŸเตเด•
เดคเต€เดฐเตเดฎเดพเดจเด‚

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

เดœเต€เดตเดจเด•เตเด•เดพเดฐเตเดŸเต† เดชเดŸเตเดŸเดฟเด•. เด’เดฐเต เดœเต€เดตเดจเด•เตเด•เดพเดฐเดจเตเดฑเต† เดจเดฎเตเดชเตผ XXX.XXX.XXXX เดซเต‹เตผเดฎเดพเดฑเตเดฑเดฟเดฒเดพเดฃเต†เด™เตเด•เดฟเตฝ เด…เดฏเดพเดณเตเดŸเต† เดซเต‹เตบ เดจเดฎเตเดชเดฑเดฟเดจเตเดฑเต† เด†เดฆเตเดฏเดคเตเดคเต† 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;

เด•เตบเดตเต‡เตผเดทเตป เดซเด‚เด—เตเดทเดจเตเด•เดณเตเด‚ เดธเต‹เดชเดพเดงเดฟเด• เดŽเด•เตเดธเตเดชเตเดฐเดทเดจเตเด•เดณเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต

เดœเต€เดตเดจเด•เตเด•เดพเดฐเตเดŸเต† เดชเดŸเตเดŸเดฟเด•. เดฎเดพเดธเดคเตเดคเดฟเดจเตเดฑเต† เด†เดฆเตเดฏ เดฆเดฟเดตเดธเด‚ (เดเดคเต†เด™เตเด•เดฟเดฒเตเด‚) เดœเต‹เดฒเดฟเด•เตเด•เต เดตเดจเตเดจ เดŽเดฒเตเดฒเดพ เดœเต€เดตเดจเด•เตเด•เดพเดฐเตเดŸเต†เดฏเตเด‚ เดฒเดฟเดธเตเดฑเตเดฑเต เดจเต‡เดŸเตเด•
เดคเต€เดฐเตเดฎเดพเดจเด‚

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

เดœเต€เดตเดจเด•เตเด•เดพเดฐเตเดŸเต† เดชเดŸเตเดŸเดฟเด•. 2008-เตฝ เดœเต‹เดฒเดฟเด•เตเด•เต เดตเดจเตเดจ เดŽเดฒเตเดฒเดพ เดœเต€เดตเดจเด•เตเด•เดพเดฐเตเดŸเต†เดฏเตเด‚ เดฒเดฟเดธเตเดฑเตเดฑเต เดจเต‡เดŸเตเด•
เดคเต€เดฐเตเดฎเดพเดจเด‚

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

เดชเดŸเตเดŸเดฟเด• DUAL. เดซเต‹เตผเดฎเดพเดฑเตเดฑเดฟเตฝ เดจเดพเดณเดคเตเดคเต† เดคเต€เดฏเดคเดฟ เด•เดพเดฃเดฟเด•เตเด•เตเด•: เดจเดพเดณเต† เดœเดจเตเดตเดฐเดฟ เดฐเดฃเตเดŸเดพเด‚ เดฆเดฟเดตเดธเดฎเดพเดฃเต
เดคเต€เดฐเตเดฎเดพเดจเด‚

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

เดœเต€เดตเดจเด•เตเด•เดพเดฐเตเดŸเต† เดชเดŸเตเดŸเดฟเด•. เดŽเดฒเตเดฒเดพ เดœเต€เดตเดจเด•เตเด•เดพเดฐเตเดŸเต†เดฏเตเด‚ เดฒเดฟเดธเตเดฑเตเดฑเตเด‚ เด“เดฐเต‹ เดœเต€เดตเดจเด•เตเด•เดพเดฐเดจเตเด‚ เดœเต‹เดฒเดฟเดฏเดฟเตฝ เดŽเดคเตเดคเดฟเดฏ เดคเต€เดฏเดคเดฟเดฏเตเด‚ เดซเต‹เตผเดฎเดพเดฑเตเดฑเดฟเตฝ เดจเต‡เดŸเตเด•: เดœเต‚เตบ 21, 2007
เดคเต€เดฐเตเดฎเดพเดจเด‚

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 เดซเต†เดฌเตเดฐเตเดตเดฐเดฟเดฏเดฟเตฝ เดœเต‹เดฒเดฟ เด†เดฐเด‚เดญเดฟเดšเตเดš เดŽเดฒเตเดฒเดพ เดœเต€เดตเดจเด•เตเด•เดพเดฐเตเดŸเต†เดฏเตเด‚ เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดจเต‡เดŸเตเด•.
เดคเต€เดฐเตเดฎเดพเดจเด‚

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'; 

เดชเดŸเตเดŸเดฟเด• DUAL. เดจเดฟเดฒเดตเดฟเดฒเต† เดคเต€เดฏเดคเดฟ, + เดธเต†เด•เตเด•เตปเดกเต, + เดฎเดฟเดจเดฟเดฑเตเดฑเต, + เดฎเดฃเดฟเด•เตเด•เต‚เตผ, + เดฆเดฟเดตเดธเด‚, + เดฎเดพเดธเด‚, + เดตเตผเดทเด‚ เด•เตŠเดฃเตเดŸเตเดตเดฐเดฟเด•
เดคเต€เดฐเตเดฎเดพเดจเด‚

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;

เด—เตเดฐเต‚เดชเตเดชเต เดซเด‚เด—เตโ€Œเดทเดจเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดธเด‚เด—เตเดฐเดนเดฟเดšเตเดš เดกเดพเดฑเตเดฑ เดฑเดฟเดชเตเดชเต‹เตผเดŸเตเดŸเตเดšเต†เดฏเตเดฏเตเดจเตเดจเต

เดœเต€เดตเดจเด•เตเด•เดพเดฐเตเดŸเต† เดชเดŸเตเดŸเดฟเด•. เดเดฑเตเดฑเดตเตเด‚ เด•เตเดฑเดžเตเดžเดคเตเด‚ เด•เต‚เดŸเดฟเดฏเดคเตเดฎเดพเดฏ เดถเดฎเตเดชเดณเด‚, เดœเต‹เดฒเดฟเดฏเดฟเตฝ เดŽเดคเตเดคเดฟเดฏเดคเดฟเดจเตเดฑเต† เดจเต‡เดฐเดคเตเดคเต†เดฏเตเด‚ เดตเตˆเด•เดฟเดฏ เดคเต€เดฏเดคเดฟเด•เดณเตเด‚ เดœเต€เดตเดจเด•เตเด•เดพเดฐเตเดŸเต† เดŽเดฃเตเดฃเดตเตเด‚ เด‰เตพเดชเตเดชเต†เดŸเต† เดกเดฟเดชเตเดชเดพเตผเดŸเตเดŸเตโ€Œเดฎเต†เดจเตเดฑเต_เดเดกเดฟ เดชเตเดฐเด•เดพเดฐเด‚ เด’เดฐเต เดฑเดฟเดชเตเดชเต‹เตผเดŸเตเดŸเต เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เตเด•. เดœเต€เดตเดจเด•เตเด•เดพเดฐเตเดŸเต† เดŽเดฃเตเดฃเด‚ เด…เดจเตเดธเดฐเดฟเดšเตเดšเต เด…เดŸเตเด•เตเด•เตเด• (เด…เดตเดฐเต‹เดนเดฃเด‚)
เดคเต€เดฐเตเดฎเดพเดจเด‚

  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-เตฝ เด•เต‚เดŸเตเดคเตฝ เดœเต€เดตเดจเด•เตเด•เดพเดฐเตเดณเตเดณ เดกเดฟเดชเตเดชเดพเตผเดŸเตเดŸเตโ€Œเดฎเต†เดจเตเดฑเต_เดเดกเดฟเด•เดณเตเดŸเต† เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดจเต‡เดŸเตเด•
เดคเต€เดฐเตเดฎเดพเดจเด‚

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

เดœเต€เดตเดจเด•เตเด•เดพเดฐเตเดŸเต† เดชเดŸเตเดŸเดฟเด•. เดกเดฟเดชเตเดชเดพเตผเดŸเตเดŸเตโ€Œเดฎเต†เดจเตเดฑเต_เดเดกเดฟเด•เดณเตเดŸเต† เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเตเด‚ เด“เดฐเต‹ เดกเดฟเดชเตเดชเดพเตผเดŸเตเดŸเตโ€Œเดฎเต†เดจเตเดฑเดฟเดฒเต†เดฏเตเด‚ เดœเต€เดตเดจเด•เตเด•เดพเดฐเตเดŸเต† เดถเดฐเดพเดถเดฐเดฟ เดถเดฎเตเดชเดณเดตเตเด‚ เดจเต‡เดŸเตเด•.
เดคเต€เดฐเตเดฎเดพเดจเด‚

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

เดชเดŸเตเดŸเดฟเด• เดฐเดพเดœเตเดฏเด™เตเด™เตพ. 60-เตฝ เด•เต‚เดŸเตเดคเตฝ เด‰เดณเตเดณ เดŽเดฒเตเดฒเดพ เดฐเดพเดœเตเดฏเดคเตเดคเดฟเดจเตเดฑเต†_เดจเดพเดฎเด™เตเด™เดณเตเดŸเต†เดฏเตเด‚ เดŽเดฒเตเดฒเดพ เด…เด•เตเดทเดฐเด™เตเด™เดณเตเดŸเต†เดฏเตเด‚ เด†เด•เต†เดคเตเดคเตเด• เดฑเต€เดœเดฟเดฏเตบ_เดเดกเดฟ เดฒเดฟเดธเตเดฑเตเดฑเต เดจเต‡เดŸเตเด•
เดคเต€เดฐเตเดฎเดพเดจเด‚

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

เดœเต€เดตเดจเด•เตเด•เดพเดฐเตเดŸเต† เดชเดŸเตเดŸเดฟเด•. เดจเดฟเดฐเดตเดงเดฟ (>1) job_id-เด•เดณเดฟเดฒเต† เดœเต€เดตเดจเด•เตเด•เดพเตผ เดœเต‹เดฒเดฟ เดšเต†เดฏเตเดฏเตเดจเตเดจ เดกเดฟเดชเตเดชเดพเตผเดŸเตเดŸเตโ€Œเดฎเต†เดจเตเดฑเต_เดเดกเดฟเด•เดณเตเดŸเต† เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดจเต‡เดŸเตเด•
เดคเต€เดฐเตเดฎเดพเดจเด‚

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

เดœเต€เดตเดจเด•เตเด•เดพเดฐเตเดŸเต† เดชเดŸเตเดŸเดฟเด•. เด•เต€เดดเตเดฆเตเดฏเต‹เด—เดธเตเดฅเดฐเตเดŸเต† เดŽเดฃเตเดฃเด‚ 5-เตฝ เด•เต‚เดŸเตเดคเดฒเตเด‚ เด…เดตเดจเตเดฑเต† เด•เต€เดดเตเดฆเตเดฏเต‹เด—เดธเตเดฅเดฐเตเดŸเต† เดŽเดฒเตเดฒเดพ เดถเดฎเตเดชเดณเดคเตเดคเดฟเดจเตเดฑเต†เดฏเตเด‚ เด†เด•เต†เดคเตเดคเตเด• 50000-เตฝ เด•เต‚เดŸเตเดคเดฒเตเดณเตเดณ เดฎเดพเดจเต‡เดœเตผ_เดเดกเดฟเด•เดณเตเดŸเต† เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดจเต‡เดŸเตเด•.
เดคเต€เดฐเตเดฎเดพเดจเด‚

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

เดœเต€เดตเดจเด•เตเด•เดพเดฐเตเดŸเต† เดชเดŸเตเดŸเดฟเด•. เด…เดตเดจเตเดฑเต† เดŽเดฒเตเดฒเดพ เด•เต€เดดเตเดฆเตเดฏเต‹เด—เดธเตเดฅเดฐเตเดŸเต†เดฏเตเด‚ เดถเดฐเดพเดถเดฐเดฟ เดถเดฎเตเดชเดณเด‚ 6000 เดฎเตเดคเตฝ 9000 เดตเดฐเต†เดฏเตเดณเตเดณ, เดฌเต‹เดฃเดธเตเด•เตพ เดฒเดญเดฟเด•เตเด•เดพเดคเตเดค เดฎเดพเดจเต‡เดœเตผ_เดเดกเดฟเด•เดณเตเดŸเต† เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดจเต‡เดŸเตเด• (เด•เดฎเตเดฎเต€เดทเตป_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. เดŽเด‚เดชเตเดฒเต‹เดฏเดฟ เดŸเต‡เดฌเดฟเตพ เดŽเดฒเตเดฒเดพ เดœเต€เดตเดจเด•เตเด•เดพเดฐเต†เดฏเตเด‚ เดธเด‚เดญเดฐเดฟเด•เตเด•เตเดจเตเดจเต. Job_history เดชเดŸเตเดŸเดฟเด• เด•เดฎเตเดชเดจเดฟ เดตเดฟเดŸเตเดŸเตเดชเต‹เดฏ เดœเต€เดตเดจเด•เตเด•เดพเดฐเต† เดธเด‚เดญเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เด•เดฎเตเดชเดจเดฟเดฏเดฟเดฒเต† เดŽเดฒเตเดฒเดพ เดœเต€เดตเดจเด•เตเด•เดพเดฐเต†เดฏเตเด‚ เด…เดตเดฐเตเดŸเต† เดจเดฟเดฒเดฏเต†เดฏเตเด‚ เด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เด’เดฐเต เดฑเดฟเดชเตเดชเต‹เตผเดŸเตเดŸเต เดจเต‡เดŸเตเด• (เดชเตเดฑเดชเตเดชเต†เดŸเตเดจเตเดจ เดคเต€เดฏเดคเดฟเดฏเต‹เดŸเต† เดœเต‹เดฒเดฟ เดšเต†เดฏเตเดฏเตเด•เดฏเต‹ เด•เดฎเตเดชเดจเดฟ เดตเดฟเดŸเตเดŸเตเดชเต‹เดตเตเด•เดฏเต‹ เดšเต†เดฏเตเดฏเตเด•)
เด‰เดฆเดพเดนเดฐเดฃเด‚:
เด†เดฆเตเดฏ_เดจเดพเดฎเด‚ | เดชเดฆเดตเดฟ
เดœเต†เดจเตเดจเดฟเดซเตผ | 31 เดกเดฟเดธเด‚เดฌเตผ 2006-เดจเต เด•เดฎเตเดชเดจเดฟ เดตเดฟเดŸเตเดŸเต
เด•เตเดฒเดพเดฐ | เดจเดฟเดฒเดตเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต
เดคเต€เดฐเตเดฎเดพเดจเด‚

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 เดชเตเดฐเดคเต€เด•เด™เตเด™เดณเดฟเตฝ เด•เต‚เดŸเตเดคเดฒเดพเดฃเต
เดคเต€เดฐเตเดฎเดพเดจเด‚

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;

เดŸเต‡เดฌเดฟเตพ เดœเต€เดตเดจเด•เตเด•เดพเตผ, เดตเด•เตเดชเตเดชเตเด•เตพ. เดเดŸเดฟ เดตเด•เตเดชเตเดชเดฟเตฝ เดœเต‹เดฒเดฟ เดšเต†เดฏเตเดฏเตเดจเตเดจ เดœเต€เดตเดจเด•เตเด•เดพเดฐเต† เด•เดพเดฃเดฟเด•เตเด•เตเด•
เดคเต€เดฐเตเดฎเดพเดจเด‚

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 เดชเตเดฐเดคเต€เด•เด™เตเด™เดณเดฟเตฝ เด•เต‚เดŸเตเดคเดฒเดพเดฃเต
เดคเต€เดฐเตเดฎเดพเดจเด‚

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;

เด‡เดชเตเดชเต‡เดพเดดเดคเตเดคเต‡เด•เตเด•เต เด‡เดคเตเดฐเดฎเดพเดคเตเดฐเด‚.

เดœเต‹เดฒเดฟเด•เตพ เดฐเดธเด•เดฐเดตเตเด‚ เด†เดตเต‡เดถเด•เดฐเดตเตเดฎเดพเดฃเต†เดจเตเดจเต เดžเดพเตป เดชเตเดฐเดคเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเต.
เดˆ เดœเต‹เดฒเดฟเด•เดณเตเดŸเต† เดชเดŸเตเดŸเดฟเด•เดฏเดฟเตฝ เดžเดพเตป เด•เดดเดฟเดฏเตเดจเตเดจเดคเตเดฐ เดšเต‡เตผเด•เตเด•เตเด‚.
เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เด…เดญเดฟเดชเตเดฐเดพเดฏเด™เตเด™เดณเตเด‚ เดจเดฟเตผเดฆเตเดฆเต‡เดถเด™เตเด™เดณเตเด‚ เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเตฝ เดŽเดจเดฟเด•เตเด•เต เดธเดจเตเดคเต‹เดทเดฎเตเดฃเตเดŸเต.

PS: เด†เดฐเต†เด™เตเด•เดฟเดฒเตเด‚ เดฐเดธเด•เดฐเดฎเดพเดฏ เด’เดฐเต SELECT เดŸเดพเดธเตโ€Œเด•เตเด•เตเดฎเดพเดฏเดฟ เดตเดจเตเดจเดพเตฝ, เด…เดญเดฟเดชเตเดฐเดพเดฏเด™เตเด™เดณเดฟเตฝ เดŽเดดเตเดคเตเด•, เดžเดพเตป เด…เดคเต เดชเดŸเตเดŸเดฟเด•เดฏเดฟเตฝ เดšเต‡เตผเด•เตเด•เตเด‚.

ะกะฟะฐัะธะฑะพ.

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•