рдПрд╕рдХреНрдпреВрдПрд▓ рдХреЗ рдЬреНрдЮрд╛рди рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдХрд╛ рд╣рдорд╛рд░рд╛ рд╕рдВрд╕реНрдХрд░рдг

рд╣рдо, рдХрдИ рдЕрдиреНрдп рд╕рдВрдЧрдардиреЛрдВ рдХреА рддрд░рд╣, рдЬрдм рд╡реЗ рдХрд╛рдо рдореЗрдВ рдЖрддреЗ рд╣реИрдВ рддреЛ рдЖрд╡реЗрджрдХреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВред рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдЖрдзрд╛рд░ рдореМрдЦрд┐рдХ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдХрд╛рд░реНрдп рднреА рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдХреБрдЫ рджрд┐рдиреЛрдВ рдкрд╣рд▓реЗ, рдкреНрд░рдмрдВрдзрди рдиреЗ рдореБрдЭреЗ SQL рдЬреНрдЮрд╛рди рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ред

рдмреЗрд╢рдХ, рдореИрдВрдиреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдЖрд╡реЗрджрдХреЛрдВ рдХрд╛ рд╕реНрддрд░ рдЕрд▓рдЧ рд╣реИ рдФрд░ рдХрд╛рд░реНрдп, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЬрд╛рдиреЗ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЙрдирдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рд╖рдп рдХрд┐рддрдиреА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╡рд┐рд╖рдп рдХреЛ рдЬрд╛рдирддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдбреАрдмреАрдПрдордПрд╕ рдХреА рдХрд┐рд╕реА рднреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдЬреНрдЮрд╛рди рдкрд░ рдХрд╛рд░реНрдп рджреЗрдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рдерд╛ред рд╣рдо рдЕрдкрдиреЗ рдХрд╛рдо рдореЗрдВ рдУрд░реЗрдХрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЙрди рдЖрд╡реЗрджрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдореБрд╢реНрдХрд┐рд▓реЗрдВ рдкреИрджрд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЗрд╡рд▓ рдПрдордПрд╕ рдПрд╕рдХреНрдпреВрдПрд▓ рдпрд╛ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдХреНрдпреВрдПрд▓ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо-рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд┐рд╖рд┐рджреНрдз рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рддреЗ рд╕рдордп рдпрд╣ рдЕрдкреЗрдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИред

рдкрд░реАрдХреНрд╖рдг рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, Oracle 11g рдиреЗ рдПрдХ рд╕реНрдХреАрдорд╛ рддреИрдирд╛рдд рдХреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрд╛рд▓рд┐рдХрд╛рдУрдВ рд╣реИрдВ:



рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд╛рдБрдЪ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрд╕рдХреНрдпреВрдПрд▓ рдкреНрд░рд╢реНрдиреЛрдВ рдХреА рд░рдЪрдирд╛ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛:

рдЯрд╛рд╕реНрдХ 1
рддрддреНрдХрд╛рд▓ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рд╕реЗ рдЕрдзрд┐рдХ рд╡реЗрддрди рдкрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреА рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ

рдЙрддреНрддрд░ рд╡рд┐рдХрд▓реНрдк
select a.* from employee a, employee b where b.id = a.chief_id and a.salary > b.salary 



рдЯрд╛рд╕реНрдХ реи
рдЕрдкрдиреЗ рд╡рд┐рднрд╛рдЧ рдореЗрдВ рдЕрдзрд┐рдХрддрдо рд╡реЗрддрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреА рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ

рдЙрддреНрддрд░ рд╡рд┐рдХрд▓реНрдк
 select a.* from employee a where a.salary = ( select max(salary) from employee b where b.department_id = a.department_id ) 



рдЯрд╛рд╕реНрдХ 3
рд╡рд┐рднрд╛рдЧ рдЖрдИрдбреА рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ, рдЬрд┐рд╕рдореЗрдВ рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ 3 рд▓реЛрдЧреЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИ

рдЙрддреНрддрд░ рд╡рд┐рдХрд▓реНрдк
 select department_id from employee group by department_id having count(*) <= 3 



рдЯрд╛рд╕реНрдХ 4
рдЙрди рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреА рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ, рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдПрдХ рд╣реА рд╡рд┐рднрд╛рдЧ рдореЗрдВ рдХрд╛рд░реНрдпрд░рдд рдкреНрд░рдмрдВрдзрдХ рдирд╣реАрдВ рд╣реИ

рдЙрддреНрддрд░ рд╡рд┐рдХрд▓реНрдк
 select a.* from employee a left join employee b on (b.id = a.chief_id and b.department_id = a.department_id) where b.id is null 



рдЯрд╛рд╕реНрдХ 5
рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЗ рдЕрдзрд┐рдХрддрдо рдХреБрд▓ рд╡реЗрддрди рдХреЗ рд╕рд╛рде рд╡рд┐рднрд╛рдЧ рдХреА рдЖрдИрдбреА рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ

рдЙрддреНрддрд░ рд╡рд┐рдХрд▓реНрдк
 with sum_salary as ( select department_id, sum(salary) salary from employee group by department_id ) select department_id from sum_salary a where a.salary = ( select max(salary) from sum_salary ) 



рдЗрд╖реНрдЯрддрдо рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдЕрд░реНрде рдореЗрдВ рдЦреЛрдЬ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереАред рдПрдХрдорд╛рддреНрд░ рдЖрд╡рд╢реНрдпрдХрддрд╛: рдЕрдиреБрд░реЛрдз рдХреЛ рдХрд┐рд╕реА рднреА рдЗрдирдкреБрдЯ рдкрд░ рд╕рд╣реА рдЙрддреНрддрд░ рджреЗрдирд╛ рд╣реЛрдЧрд╛ред рд╕рдордп рд╕реАрдорд╛ рдХреЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рднреА рдХреНрд░рдо рдореЗрдВ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рдЧрдИ рдереАред рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╣реА рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде, рдмрдврд╝реА рд╣реБрдИ рдЬрдЯрд┐рд▓рддрд╛ рдХрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:

рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдп
рдПрдХ SQL рдХреНрд╡реЗрд░реА рд▓рд┐рдЦреЗрдВ рдЬреЛ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдХреБрдЫ рдХреЙрд▓рдо рдореЗрдВ рдирд┐рд╣рд┐рдд рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореВрд▓реНрдпреЛрдВ рдХреЗ рдЙрддреНрдкрд╛рдж рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ

рдЙрддреНрддрд░ рд╡рд┐рдХрд▓реНрдк
 select exp(sum(ln(decode(sign(salary),0,1,-1,-salary,salary)))) *decode(mod(sum(decode(sign(salary),-1,1,0)),2),1,-1,1) *sign(min(abs(salary))) from employee 



рдмреЗрд╢рдХ, рдпрд╣рд╛рдВ рдкреЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП рдЙрддреНрддрд░ рдХреЗрд╡рд▓ рд╡рд╣реА рдирд╣реАрдВ рд╣реИрдВред рдпрджрд┐ рдЖрд╡реЗрджрдХ рдХреЗ рдЕрдиреБрд░реЛрдз рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдЗрд╕рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдкрд░рд┐рдгрд╛рдо (рд╕реНрд░реЛрдд рдбреЗрдЯрд╛ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕реЗрдЯреЛрдВ рдХреЗ рд▓рд┐рдП) рдХреА рддреБрд▓рдирд╛ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдВрджрд░реНрдн рдЕрдиреБрд░реЛрдз рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИред

Source: https://habr.com/ru/post/In181033/


All Articles