SQL рдордиреЛрд░рдВрдЬрдХ рдХреЛрдбреА

рд╣реЕрд▓реЛ рд╣реЕрдмреНрд░!

3 рд╡рд░реНрд╖рд╛рдВрд╣реВрди рдЕрдзрд┐рдХ рдХрд╛рд│ рдореА рд╡рд┐рд╡рд┐рдз рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗрдВрджреНрд░рд╛рдВрдордзреНрдпреЗ SQL рд╢рд┐рдХрд╡рдд рдЖрд╣реЗ, рдЖрдгрд┐ рдорд╛рдЭреЗ рдПрдХ рдирд┐рд░реАрдХреНрд╖рдг рдЕрд╕реЗ рдЖрд╣реЗ рдХреА, рд╡рд┐рджреНрдпрд╛рд░реНрдереНрдпрд╛рдВрдирд╛ рдПрдЦрд╛рджреЗ рдХрд╛рд░реНрдп рджрд┐рд▓реЗ рдЧреЗрд▓реЗ рддрд░ рддреЗ SQL рдЕрдзрд┐рдХ рдЪрд╛рдВрдЧрд▓реНрдпрд╛ рдкреНрд░рдХрд╛рд░реЗ рд╢рд┐рдХрддрд╛рдд рдЖрдгрд┐ рд╕рдордЬрддрд╛рдд, рдЖрдгрд┐ рдХреЗрд╡рд│ рд╢рдХреНрдпрддрд╛ рдЖрдгрд┐ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рдкрд╛рдпрд╛рдВрдмрджреНрджрд▓ рдмреЛрд▓рд╛рдпрдЪреЗ рдирд╛рд╣реА.

рдпрд╛ рд▓реЗрдЦрд╛рдд, рдореА рддреБрдордЪреНрдпрд╛рд╕реЛрдмрдд рдорд╛рдЭреНрдпрд╛ рдХрд╛рд░реНрдпрд╛рдВрдЪреА рдпрд╛рджреА рд╕рд╛рдорд╛рдпрд┐рдХ рдХрд░реЗрди рдЬреА рдореА рд╡рд┐рджреНрдпрд╛рд░реНрдереНрдпрд╛рдВрдирд╛ рдЧреГрд╣рдкрд╛рда рдореНрд╣рдгреВрди рджреЗрддреЛ рдЖрдгрд┐ рдЬреНрдпрд╛рд╡рд░ рдЖрдореНрд╣реА рд╡рд┐рд╡рд┐рдз рдкреНрд░рдХрд╛рд░рдЪреЗ рд╡рд┐рдЪрд╛рд░рдордВрдерди рдХрд░рддреЛ, рдЬреНрдпрд╛рдореБрд│реЗ SQL рдЪреА рд╕рдЦреЛрд▓ рдЖрдгрд┐ рд╕реНрдкрд╖реНрдЯ рд╕рдордЬ рд╣реЛрддреЗ.

SQL рдордиреЛрд░рдВрдЬрдХ рдХреЛрдбреА

SQL (╦И╔Ыs╦Иkju╦И╔Ыl; eng. рд╕рдВрд░рдЪрд┐рдд рдХреНрд╡реЗрд░реА рднрд╛рд╖рд╛) рд╣реА рдпреЛрдЧреНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдкреНрд░рдгрд╛рд▓реАрджреНрд╡рд╛рд░реЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕рдордзреНрдпреЗ рдбреЗрдЯрд╛ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рд╕реБрдзрд╛рд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реА рдЬрд╛рдгрд╛рд░реА рдШреЛрд╖рдгрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдЖрд╣реЗ. рдкреБрдвреЗ рд╡рд╛рдЪрд╛тАж

рддреБрдореНрд╣реА рдПрд╕рдХреНрдпреВрдПрд▓ рдмрджреНрджрд▓ рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рдЧреЛрд╖реНрдЯреА рд╡рд╛рдЪреВ рд╢рдХрддрд╛ рд╕реНрд░реЛрдд.
рд╣рд╛ рд▓реЗрдЦ рддреБрдореНрд╣рд╛рд▓рд╛ рд╕реБрд░рд╡рд╛рддреАрдкрд╛рд╕реВрди 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 рд╡реНрдпрд╛ рд╡рд┐рднрд╛рдЧрд╛рддреАрд▓ (рд╡рд┐рднрд╛рдЧ_рдЖрдпрдбреА) рд╕рд░реНрд╡ рдХрд░реНрдордЪрд╛рд▒реНрдпрд╛рдВрдЪреА рдпрд╛рджреА рдорд┐рд│рд╡рд╛ рдЬреНрдпрд╛рдВрдЪреНрдпрд╛рдХрдбреЗ рдмреЛрдирд╕ рдЖрд╣реЗ (рдХрдорд┐рд╢рди_рдкреАрд╕реАрдЯреА рд╕реНрддрдВрднрд╛рддреАрд▓ рдореВрд▓реНрдп рд░рд┐рдХреНрдд рдирд╛рд╣реА)
рдирд┐рд░реНрдгрдп

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;

рдХрд░реНрдордЪрд╛рд░реА рдЯреЗрдмрд▓. рд╕рд░реНрд╡ рдХрд░реНрдордЪрд╛рд▒реНрдпрд╛рдВрдЪреА рдпрд╛рджреА рдорд┐рд│рд╡рд╛ рдЬреНрдпрд╛рдВрдЪреНрдпрд╛ рдирд╛рд╡рд╛рд╡рд░ 'b' рдЕрдХреНрд╖рд░ рдЖрд╣реЗ (рдХреЗрд╕ рдЕрд╕рдВрд╡реЗрджрдирд╢реАрд▓)
рдирд┐рд░реНрдгрдп

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;

рдХрд░реНрдордЪрд╛рд░реА рдЯреЗрдмрд▓. рдХрд░реНрдордЪрд╛рд▒реНрдпрд╛рдЪреНрдпрд╛ рдлреЛрди рдирдВрдмрд░рдЪрд╛ рдкрд╣рд┐рд▓рд╛ 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' рдЖрд╣реЗ рдЖрдгрд┐ рдирд╛рд╡рд╛рдЪреА рд▓рд╛рдВрдмреА рел рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рдЖрд╣реЗ рдЕрд╢рд╛ рд╕рд░реНрд╡ рдХрд░реНрдордЪрд╛рд▒реНрдпрд╛рдВрдЪреА рдпрд╛рджреА рдорд┐рд│рд╡рд╛.
рдирд┐рд░реНрдгрдп

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;

рдХрд░реНрдордЪрд╛рд░реА рдЯреЗрдмрд▓. рддреНрдпрд╛ рд╕рд░реНрд╡ рдХрд░реНрдордЪрд╛рд▒реНрдпрд╛рдВрдЪреА рдпрд╛рджреА рдорд┐рд│рд╡рд╛ рдЬреНрдпрд╛рдВрдЪреНрдпрд╛ рдЬреЙрдм_рдЖрдпрдбреА рдореВрд▓реНрдпрд╛рдд '_' рдЪрд┐рдиреНрд╣рд╛рдирдВрддрд░ рдХрд┐рдорд╛рди 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';

рдбреНрдпреБрдЕрд▓ рдЯреЗрдмрд▓. рдЙрджреНрдпрд╛рдЪреА рддрд╛рд░реАрдЦ рдлреЙрд░рдореЕрдЯрдордзреНрдпреЗ рджрд╛рдЦрд╡рд╛: рдЙрджреНрдпрд╛ рдЬрд╛рдиреЗрд╡рд╛рд░реАрдЪрд╛ рджреБрд╕рд░рд╛ рджрд┐рд╡рд╕ рдЖрд╣реЗ
рдирд┐рд░реНрдгрдп

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

рдбреНрдпреБрдЕрд▓ рдЯреЗрдмрд▓. рд╡рд░реНрддрдорд╛рди рддрд╛рд░реАрдЦ, + рд╕реЗрдХрдВрдж, + рдорд┐рдирд┐рдЯ, + рддрд╛рд╕, + рджрд┐рд╡рд╕, + рдорд╣рд┐рдирд╛, + рд╡рд░реНрд╖ рдирд┐рд░реНрдпрд╛рдд рдХрд░рд╛
рдирд┐рд░реНрдгрдп

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;

рдХрд░реНрдордЪрд╛рд░реА рдЯреЗрдмрд▓. рд╕рдВрдкреВрд░реНрдг рдкрдЧрд╛рд░ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд╕рд░реНрд╡ рдХрд░реНрдордЪрд╛рд▒реНрдпрд╛рдВрдЪреА рдпрд╛рджреА (рдкрдЧрд╛рд░ + рдХрдорд┐рд╢рди_рдкреАрд╕реАрдЯреА(%)) рдпрд╛ рд╕реНрд╡рд░реВрдкрд╛рдд рдорд┐рд│рд╡рд╛: $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;

рдХрд░реНрдордЪрд╛рд░реА рдЯреЗрдмрд▓. рейреж рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рдХрд░реНрдордЪрд╛рд▒реНрдпрд╛рдВрд╕рд╣ рд╡рд┐рднрд╛рдЧ_рдЖрдпрдбреАрдЪреА рдпрд╛рджреА рдорд┐рд│рд╡рд╛
рдирд┐рд░реНрдгрдп

  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;

рджреЗрд╢рд╛рдВрдЪреЗ рдЯреЗрдмрд▓. рд╕рд░реНрд╡ рджреЗрд╢рд╛рдВрдЪреНрдпрд╛_рдирд╛рд╡рд╛рдВрдЪреНрдпрд╛ рд╕рд░реНрд╡ рдЕрдХреНрд╖рд░рд╛рдВрдЪреНрдпрд╛ рдкреНрд░рджреЗрд╢_рдЖрдпрдбреА рдмреЗрд░реАрдЬрдЪреА рдпрд╛рджреА рдорд┐рд│рд╡рд╛ рдЬреНрдпрд╛рдордзреНрдпреЗ ремреж рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд
рдирд┐рд░реНрдгрдп

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

рдХрд░реНрдордЪрд╛рд░реА рдЯреЗрдмрд▓. рд╡рд┐рднрд╛рдЧ_рдЖрдпрдбреАрдЪреА рдпрд╛рджреА рдорд┐рд│рд╡рд╛ рдЬреНрдпрд╛рдордзреНрдпреЗ рдЕрдиреЗрдХ (>1) рдЬреЙрдм_рдЖрдпрдбреАрдЪреЗ рдХрд░реНрдордЪрд╛рд░реА рдХрд╛рдо рдХрд░рддрд╛рдд
рдирд┐рд░реНрдгрдп

  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 рдЪреНрдпрд╛ рджрд░рдореНрдпрд╛рди рдЖрд╣реЗ рдЬреНрдпрд╛рдВрдирд╛ рдмреЛрдирд╕ рдорд┐рд│рдд рдирд╛рд╣реАрдд (рдХрдорд┐рд╢рди_рдкреАрд╕реАрдЯреА рд░рд┐рдХреНрдд рдЖрд╣реЗ)
рдирд┐рд░реНрдгрдп

  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;

рдХрд░реНрдордЪрд╛рд░реА рдЯреЗрдмрд▓, рдЬреЙрдм_рдЗрддрд┐рд╣рд╛рд╕. рдХрд░реНрдордЪрд╛рд░реА рдЯреЗрдмрд▓ рд╕рд░реНрд╡ рдХрд░реНрдордЪрд╛рд░реА рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░рддреЗ. рдЬреЙрдм_рдЗрддрд┐рд╣рд╛рд╕ рд╕рд╛рд░рдгреА рдХрдВрдкрдиреА рд╕реЛрдбрд▓реЗрд▓реНрдпрд╛ рдХрд░реНрдордЪрд╛рд▒реНрдпрд╛рдВрдирд╛ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░рддреЗ. рд╕рд░реНрд╡ рдХрд░реНрдордЪрд╛рд░реНтАНрдпрд╛рдВрдЪрд╛ рдЖрдгрд┐ рдХрдВрдкрдиреАрддреАрд▓ рддреНрдпрд╛рдВрдЪреНрдпрд╛ рд╕реНрдерд┐рддреАрдЪрд╛ рдЕрд╣рд╡рд╛рд▓ рдорд┐рд│рд╡рд╛ (рд░реЛрдЬрдЧрд╛рд░ рдХрд┐рдВрд╡рд╛ рдирд┐рдШрдгреНрдпрд╛рдЪреНрдпрд╛ рддрд╛рд░рдЦреЗрд╕рд╣ рдХрдВрдкрдиреА рд╕реЛрдбрд▓реА)
рдЙрджрд╛рд╣рд░рдг:
рдирд╛рд╡ | рд╕реНрдерд┐рддреА
рдЬреЗрдирд┐рдлрд░ | 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);

рдЯреЗрдмрд▓ рдХрд░реНрдордЪрд╛рд░реА, рд╡рд┐рднрд╛рдЧ, рд╕реНрдерд╛рдиреЗ, рджреЗрд╢, рдкреНрд░рджреЗрд╢. рдпреБрд░реЛрдкрдордзреНрдпреЗ рд░рд╛рд╣рдгрд╛рд▒реНрдпрд╛ рдХрд░реНрдордЪрд╛рд▒реНрдпрд╛рдВрдЪреА рдпрд╛рджреА рдорд┐рд│рд╡рд╛ (рдХреНрд╖реЗрддреНрд░_рдирд╛рд╡)
рдирд┐рд░реНрдгрдп

 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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛