рдЕрдШрд┐рд▓реНрд▓реЛ рдорд╛
рдпрд╕ рд▓реЗрдЦрдорд╛, рдо рджреЗрдЦрд╛рдЙрдиреЗрдЫреБ рдХрд┐ рдХрд╕рд░реА рдпреЛ рдЕрд╡рдзрд╛рд░рдгрд╛рд▓реЗ рддрдкрд╛рдЗрдБрд▓рд╛рдИ рдЕрдкрд░реЗрдЯрд┐рдЩ рддрд░реНрдХрдорд╛ рдХреБрдиреИ рдкрд░рд┐рд╡рд░реНрддрди рдирдЧрд░реА рдбрд╛рдЯрд╛рдмреЗрд╕рдорд╛ рд▓реЗрдЦ рд░ рдкрдвреНрдирд▓рд╛рдИ рдЫрд┐рдЯреЛ рд░ рд╕рд╣рдЬ рд░реВрдкрдорд╛ рд╕рдиреНрддреБрд▓рди рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рд╕рдорд╛рди рдкреНрд░рдХрд╛рд░реНрдпрддрд╛рд▓рд╛рдИ рдЖрдзреБрдирд┐рдХ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ DBMSs (рд╡рд┐рд╢реЗрд╖ рдЧрд░реА, Oracle рд░ Microsoft SQL Server) рдорд╛ рд▓рд╛рдЧреВ рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░рд┐рдПрдХреЛ рдЫред рд▓реЗрдЦрдХреЛ рдЕрдиреНрддреНрдпрдорд╛ рдо рджреЗрдЦрд╛рдЙрдиреЗрдЫреБ рдХрд┐ рдЙрдиреАрд╣рд░реВрд▓реЗ рдХреЗ рдЧрд░реЗ, рд╣рд▓реНрдХрд╛ рд░реВрдкрдорд╛ рднрдиреНрдиреБрдкрд░реНрджрд╛, рдзреЗрд░реИ рд░рд╛рдореНрд░реЛрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реЗрдиред
рд╡рд┐рд╡рд░рдг
рдкрд╣рд┐рд▓реЗ рдЬрд╕реНрддреИ, рд░рд╛рдореНрд░реЛ рдмреБрдЭреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдо рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рд╕рд╣рд┐рдд рд╡рд░реНрдгрди рд╕реБрд░реБ рдЧрд░реНрдиреЗрдЫреБред рдорд╛рдиреМрдВ рдХрд┐ рд╣рд╛рдореАрд▓реЗ рддрд░реНрдХ рд▓рд╛рдЧреВ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рдЬрд╕рд▓реЗ рд╡рд┐рднрд╛рдЧрд╣рд░реВрдХреЛ рд╕реВрдЪреА рдлрд┐рд░реНрддрд╛ рдЧрд░реНрдиреЗрдЫ рддрд┐рдиреАрд╣рд░реВрдорд╛ рдХрд░реНрдордЪрд╛рд░реАрд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рд░ рддрд┐рдиреАрд╣рд░реВрдХреЛ рдХреБрд▓ рддрд▓рдмред
рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдбрд╛рдЯрд╛рдмреЗрд╕рдорд╛ рдпреЛ рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ:
CLASS Department тАШ╨Ю╤В╨┤╨╡╨╗тАЩ;
name тАШ╨Э╨░╨╕╨╝╨╡╨╜╨╛╨▓╨░╨╜╨╕╨╡тАЩ = DATA STRING[100] (Department);
CLASS Employee тАШ╨б╨╛╤В╤А╤Г╨┤╨╜╨╕╨║тАЩ;
department тАШ╨Ю╤В╨┤╨╡╨╗тАЩ = DATA Department (Employee);
salary тАШ╨Ч╨░╤А╨┐╨╗╨░╤В╨░тАЩ = DATA NUMERIC[10,2] (Employee);
countEmployees тАШ╨Ъ╨╛╨╗-╨▓╨╛ ╤Б╨╛╤В╤А╤Г╨┤╨╜╨╕╨║╨╛╨▓тАЩ (Department d) =
GROUP SUM 1 IF department(Employee e) = d;
salarySum тАШ╨б╤Г╨╝╨╝╨░╤А╨╜╨░╤П ╨╖╨░╤А╨┐╨╗╨░╤В╨░тАЩ (Department d) =
GROUP SUM salary(Employee e) IF department(e) = d;
SELECT name(Department d), countEmployees(d), salarySum(d);
рдХреБрдиреИ рдкрдирд┐ DBMS рдорд╛ рдпреЛ рдХреНрд╡реЗрд░реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрдиреЗ рдЬрдЯрд┐рд▓рддрд╛ рдмрд░рд╛рдмрд░ рд╣реБрдиреЗрдЫ рдУ (рдХрд░реНрдордЪрд╛рд░реА рд╕рдВрдЦреНрдпрд╛)рдХрд┐рдирднрдиреЗ рдпреЛ рдЧрдгрдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рдХрд░реНрдордЪрд╛рд░реАрд╣рд░реВрдХреЛ рд╕рдореНрдкреВрд░реНрдг рддрд╛рд▓рд┐рдХрд╛ рд╕реНрдХреНрдпрд╛рди рдЧрд░реНрди рд░ рддреНрдпрд╕рдкрдЫрд┐ рд╡рд┐рднрд╛рдЧрджреНрд╡рд╛рд░рд╛ рд╕рдореВрд╣рдмрджреНрдз рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рддреНрдпрд╣рд╛рдБ рдХреЗрд╣рд┐ рд╕рд╛рдирд╛ рдкрдирд┐ рд╣реБрдиреЗрдЫрдиреН (рд╣рд╛рдореА рд╡рд┐рд╢реНрд╡рд╛рд╕ рдЧрд░реНрдЫреМрдВ рдХрд┐ рд╡рд┐рднрд╛рдЧрд╣рд░реВ рднрдиреНрджрд╛ рдзреЗрд░реИ рдХрд░реНрдордЪрд╛рд░реАрд╣рд░реВ рдЫрдиреН) рдЫрдиреМрдЯ рдЧрд░рд┐рдПрдХреЛ рдпреЛрдЬрдирд╛рдорд╛ тАЛтАЛрдирд┐рд░реНрднрд░ рдЧрд░реНрджрдЫред рдУ (рдХрд░реНрдордЪрд╛рд░реАрд╣рд░реВрдХреЛ рд▓рдЧ рд╕рдВрдЦреНрдпрд╛) рд╡рд╛ рдУ (рд╡рд┐рднрд╛рдЧрд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛) рд╕рдореВрд╣реАрдХрд░рдг рд░ рдпрд╕реНрддреИ рдЕрдиреНрдп рд▓рд╛рдЧрд┐ред
рдпреЛ рд╕реНрдкрд╖реНрдЯ рдЫ рдХрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдУрднрд░рд╣реЗрдб рд╡рд┐рднрд┐рдиреНрди DBMS рдорд╛ рдлрд░рдХ рд╣реБрди рд╕рдХреНрдЫ, рддрд░ рдЬрдЯрд┐рд▓рддрд╛ рдХреБрдиреИ рдкрдирд┐ рд╣рд┐рд╕рд╛рдмрд▓реЗ рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдиреЗрдЫреИрдиред
рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдорд╛, рдХрд╛рд░реНрдпрд╛рддреНрдордХ DBMS рд▓реЗ рдПрдЙрдЯрд╛ рд╕рдмрдХреНрд╡реЗрд░реА рдЙрддреНрдкрдиреНрди рдЧрд░реНрдиреЗрдЫ рдЬрд╕рд▓реЗ рд╡рд┐рднрд╛рдЧрдХреЛ рд▓рд╛рдЧрд┐ рдЖрд╡рд╢реНрдпрдХ рдорд╛рдирд╣рд░реВ рдЧрдгрдирд╛ рдЧрд░реНрдиреЗрдЫ, рд░ рддреНрдпрд╕рдкрдЫрд┐ рдирд╛рдо рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╡рд┐рднрд╛рдЧ рддрд╛рд▓рд┐рдХрд╛рд╕рдБрдЧ рдЬреЛрдбрд┐рдиреЗрдЫред рдпрджреНрдпрдкрд┐, рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░реНрдпрдХреЛ рд▓рд╛рдЧрд┐, рдШреЛрд╖рдгрд╛ рдЧрд░реНрджрд╛, рдпреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ MATERIALized рдорд╛рд░реНрдХрд░ рд╕реЗрдЯ рдЧрд░реНрди рд╕рдореНрднрд╡ рдЫред рдкреНрд░рдгрд╛рд▓реАрд▓реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рдкреНрд░рддреНрдпреЗрдХ рдпрд╕реНрддреЛ рдкреНрд░рдХрд╛рд░реНрдпрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдореНрдмрдиреНрдзрд┐рдд рдХреНрд╖реЗрддреНрд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗрдЫред рдлрдВрдХреНрд╢рдирдХреЛ рдорд╛рди рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрджрд╛, рдлрд┐рд▓реНрдбрдХреЛ рдорд╛рди рдкрдирд┐ рдЙрд╣реА рд▓реЗрдирджреЗрдирдорд╛ рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдиреЗрдЫред рдпреЛ рдкреНрд░рдХрд╛рд░реНрдп рдкрд╣реБрдБрдЪ рдЧрд░реНрджрд╛, рдкреВрд░реНрд╡-рдЧрдгрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдХреНрд╖реЗрддреНрд░ рдкрд╣реБрдБрдЪ рдЧрд░рд┐рдиреЗрдЫред
рд╡рд┐рд╢реЗрд╖ рдЧрд░реА, рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ MATERIALIZED рд╕реЗрдЯ рдЧрд░реНрдиреБрднрдпреЛ рднрдиреЗ рдХрд░реНрдордЪрд╛рд░реА рдЧрдгрдирд╛ ╨╕ рддрд▓рдм рд░рдХрдо, рддреНрдпрд╕рдкрдЫрд┐ рд╡рд┐рднрд╛рдЧрд╣рд░реВрдХреЛ рд╕реВрдЪреАрдХреЛ рд╕рд╛рде рддрд╛рд▓рд┐рдХрд╛рдорд╛ рджреБрдИ рдХреНрд╖реЗрддреНрд░рд╣рд░реВ рдердкрд┐рдиреЗрдЫ, рдЬрд╕рд▓реЗ рдХрд░реНрдордЪрд╛рд░реАрд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рд░ рддрд┐рдиреАрд╣рд░реВрдХреЛ рдХреБрд▓ рддрд▓рдм рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрдиреЗрдЫред рдХрд░реНрдордЪрд╛рд░реА, рддрд▓рдм рд╡рд╛ рд╡рд┐рднрд╛рдЧрдХреЛ рд╕рдореНрдмрджреНрдзрддрд╛рдорд╛ рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдБрджрд╛ рдкреНрд░рдгрд╛рд▓реАрд▓реЗ рд╕реНрд╡рддрдГ рдпреА рдХреНрд╖реЗрддреНрд░рд╣рд░реВрдХреЛ рдорд╛рди рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдиреЗрдЫред рдорд╛рдерд┐рдХреЛ рдХреНрд╡реЗрд░реАрд▓реЗ рдпреА рдХреНрд╖реЗрддреНрд░рд╣рд░реВрдорд╛ рд╕реАрдзреИ рдкрд╣реБрдБрдЪ рдЧрд░реНрдиреЗрдЫ рд░ рднрд┐рддреНрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░рд┐рдиреЗрдЫ рдУ (рд╡рд┐рднрд╛рдЧрд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛).
рдкреНрд░рддрд┐рдмрдиреНрдзрд╣рд░реВ рдХреЗ рд╣реБрдиреН? рдХреЗрд╡рд▓ рдПрдЙрдЯрд╛ рдХреБрд░рд╛: рдпрд╕реНрддреЛ рдкреНрд░рдХрд╛рд░реНрдпрдорд╛ рдЗрдирдкреБрдЯ рдорд╛рдирд╣рд░реВрдХреЛ рд╕реАрдорд┐рдд рд╕рдВрдЦреНрдпрд╛ рд╣реБрдиреБрдкрд░реНрдЫ рдЬрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдпрд╕рдХреЛ рдорд╛рди рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫред рдЕрдиреНрдпрдерд╛, рдпрд╕рдХреЛ рд╕рдмреИ рдорд╛рдирд╣рд░реВ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрдиреЗ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдЙрди рдЕрд╕рдореНрднрд╡ рд╣реБрдиреЗрдЫ, рдХрд┐рдирднрдиреЗ рддреНрдпрд╣рд╛рдБ рдкрдЩреНрдХреНрддрд┐рд╣рд░реВрдХреЛ рдЕрд╕реАрдо рд╕рдВрдЦреНрдпрд╛ рднрдПрдХреЛ рддрд╛рд▓рд┐рдХрд╛ рд╣реБрди рд╕рдХреНрджреИрдиред
рдЙрджрд╛рд╣рд░рдг:
employeesCount тАШ╨Ъ╨╛╨╗╨╕╤З╨╡╤Б╤В╨▓╨╛ ╤Б╨╛╤В╤А╤Г╨┤╨╜╨╕╨║╨╛╨▓ ╤Б ╨╖╨░╤А╨┐╨╗╨░╤В╨╛╨╣ > NтАЩ (Department d, NUMERIC[10,2] N) =
GROUP SUM salary(Employee e) IF department(e) = d AND salary(e) > N;
рдпреЛ рдкреНрд░рдХрд╛рд░реНрдп N рдХреЛ рдорд╛рдирд╣рд░реВрдХреЛ рдЕрд╕реАрдо рд╕рдВрдЦреНрдпрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫ (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдХреБрдиреИ рдкрдирд┐ рдирдХрд╛рд░рд╛рддреНрдордХ рдорд╛рди рдЙрдкрдпреБрдХреНрдд рдЫ)ред рддрд╕рд░реНрде, рддрдкрд╛рдИрдВ рдпрд╕рдорд╛ рдордЯреЗрд░рд┐рдпрд▓рд╛рдЗрдЬреНрдб рд░рд╛рдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдиред рддреНрдпрд╕реЛрднрдП рдпреЛ рддрд╛рд░реНрдХрд┐рдХ рд╕реАрдорд╛ рд╣реЛ, рдкреНрд░рд╛рд╡рд┐рдзрд┐рдХ рд╣реЛрдЗрди (рдЕрд░реНрдерд╛рдд рд╣рд╛рдореАрд▓реЗ рдпрд╕рд▓рд╛рдИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрди рд╕рдХреЗрдиреМрдВ)ред рдЕрдиреНрдпрдерд╛, рддреНрдпрд╣рд╛рдБ рдХреБрдиреИ рдкреНрд░рддрд┐рдмрдиреНрдзрд╣рд░реВ рдЫреИрдирдиреНред рддрдкрд╛рдИрдВ рд╕рдореВрд╣реАрдХрд░рдг, рдХреНрд░рдордмрджреНрдз, AND рд░ OR, PARTITION, recursion, рдЖрджрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред
рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, рдЕрдШрд┐рд▓реНрд▓реЛ рд▓реЗрдЦ рдХреЛ рд╕рдорд╕реНрдпрд╛ 2.2 рдорд╛, рддрдкрд╛рдИрдВ рджреБрд╡реИ рдкреНрд░рдХрд╛рд░реНрдп рдорд╛ MATERIALIZED рд░рд╛рдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:
bought '╨Ъ╤Г╨┐╨╕╨╗' (Customer c, Product p, INTEGER y) =
GROUP SUM sum(Detail d) IF
customer(order(d)) = c AND
product(d) = p AND
extractYear(date(order(d))) = y MATERIALIZED;
rating '╨а╨╡╨╣╤В╨╕╨╜╨│' (Customer c, Product p, INTEGER y) =
PARTITION SUM 1 ORDER DESC bought(c, p, y), p BY c, y MATERIALIZED;
SELECT contactName(Customer c), name(Product p) WHERE rating(c, p, 1997) < 3;
рдкреНрд░рдгрд╛рд▓реА рдЖрдлреИрд▓реЗ рдЯрд╛рдЗрдк рдХреБрдЮреНрдЬреАрд╣рд░реВрд╕рдБрдЧ рдПрдЙрдЯрд╛ рддрд╛рд▓рд┐рдХрд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗрдЫ рдЧреНрд░рд╛рд╣рдХ, рдЙрддреНрдкрд╛рджрди ╨╕ рдЗрдиреНрдЯреЗрдЬрд░, рдпрд╕рдорд╛ рджреБрдИрд╡рдЯрд╛ рдлрд┐рд▓реНрдбрд╣рд░реВ рдердкреНрдиреЗрдЫ рд░ рддрд┐рдиреАрд╣рд░реВрдорд╛ рдХреБрдиреИ рдкрдирд┐ рдкрд░рд┐рд╡рд░реНрддрдирдХреЛ рд╕рд╛рде рдлрд┐рд▓реНрдб рдорд╛рдирд╣рд░реВ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░реНрдиреЗрдЫред рдЬрдм рдпреА рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВрдорд╛ рдердк рдХрд▓рд╣рд░реВ рдмрдирд╛рдЗрдиреНрдЫ, рддрд┐рдиреАрд╣рд░реВ рдЧрдгрдирд╛ рдЧрд░рд┐рдиреЗ рдЫреИрдирдиреН, рддрд░ рдорд╛рдирд╣рд░реВ рд╕рдореНрдмрдиреНрдзрд┐рдд рдХреНрд╖реЗрддреНрд░рд╣рд░реВрдмрд╛рдЯ рдкрдврд┐рдиреЗрдЫрдиреНред
рдпреЛ рд╕рдВрдпрдиреНрддреНрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░, рддрдкрд╛рдИрдВ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдкреНрд░рд╢реНрдирд╣рд░реВрдорд╛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ (CTE) рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рд╡рд┐рд╢реЗрд╖ рдЧрд░реА, рдмрдЪреНрдЪрд╛/рдЕрднрд┐рднрд╛рд╡рдХ рд╕рдореНрдмрдиреНрдз рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд░реВрдЦ рдмрдирд╛рдЙрдиреЗ рд╕рдореВрд╣рд╣рд░реВрд▓рд╛рдИ рд╡рд┐рдЪрд╛рд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН (рдкреНрд░рддреНрдпреЗрдХ рд╕рдореВрд╣рдХреЛ рдЕрднрд┐рднрд╛рд╡рдХрд╕рдБрдЧ рд▓рд┐рдЩреНрдХ рдЫ):
parent = DATA Group (Group);
рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдбрд╛рдЯрд╛рдмреЗрд╕рдорд╛, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рддрд░реНрдХ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ:
level (Group child, Group parent) = RECURSION 1l IF child IS Group AND parent == child
STEP 2l IF parent == parent($parent);
isParent (Group child, Group parent) = TRUE IF level(child, parent) MATERIALIZED;
рд╕рдорд╛рд░реЛрд╣ рдХреЛ рд▓рд╛рдЧреА рджреЗрдЦрд┐ рдЕрднрд┐рднрд╛рд╡рдХ рд╣реЛ MATERIALized рдЪрд┐рдиреНрд╣ рд▓рдЧрд╛рдЗрдПрдХреЛ рдЫ, рддреНрдпрд╕рдкрдЫрд┐ рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рджреБрдИ рдХреБрдЮреНрдЬреАрд╣рд░реВ (рд╕рдореВрд╣рд╣рд░реВ) рднрдПрдХреЛ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдЗрдиреЗрдЫ, рдЬрд╕рдорд╛ рдлрд┐рд▓реНрдб рдЕрднрд┐рднрд╛рд╡рдХ рд╣реЛ рдкрд╣рд┐рд▓реЛ рдХреБрдЮреНрдЬреА рджреЛрд╕реНрд░реЛрдХреЛ рдмрдЪреНрдЪрд╛ рднрдПрдорд╛ рдорд╛рддреНрд░ рд╕рддреНрдп рд╣реБрдиреЗрдЫред рдпрд╕ рддрд╛рд▓рд┐рдХрд╛рдорд╛ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рд░реВрдЦрдХреЛ рдФрд╕рдд рдЧрд╣рд┐рд░рд╛рдЗрд▓реЗ рдЧреБрдгрд╛ рдЧрд░рд┐рдПрдХреЛ рд╕рдореВрд╣рд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рдмрд░рд╛рдмрд░ рд╣реБрдиреЗрдЫред рдпрджрд┐ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдЖрд╡рд╢реНрдпрдХ рдЫ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдореВрд╣рдХреЛ рд╕рдиреНрддрд╛рди рд╕рдВрдЦреНрдпрд╛ рдЧрдгрдирд╛ рдЧрд░реНрди, рддрдкрд╛рдИрдВ рдпреЛ рдкреНрд░рдХрд╛рд░реНрдп рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:
childrenCount (Group g) = GROUP SUM 1 IF isParent(Group child, g);
SQL рдХреНрд╡реЗрд░реАрдорд╛ рдХреБрдиреИ CTE рд╣реБрдиреЗрдЫреИрдиред рдмрд░реБ рддреНрдпрд╣рд╛рдБ рдПрдХ рд╕рд╛рдзрд╛рд░рдг GROUP BY рд╣реБрдиреЗрдЫред
рдпреЛ рдореЗрдХрд╛рдирд┐рдЬрдо рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рднрдПрдорд╛ рддрдкрд╛рдИрд▓реЗ рдбрд╛рдЯрд╛рдмреЗрд╕рд▓рд╛рдИ рд╕рдЬрд┐рд▓реИрд╕рдБрдЧ рдЕрд╕рдорд╛рдиреНрдп рдмрдирд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:
CLASS Order '╨Ч╨░╨║╨░╨╖';
date '╨Ф╨░╤В╨░' = DATA DATE (Order);
CLASS OrderDetail '╨б╤В╤А╨╛╨║╨░ ╨╖╨░╨║╨░╨╖╨░';
order '╨Ч╨░╨║╨░╨╖' = DATA Order (OrderDetail);
date '╨Ф╨░╤В╨░' (OrderDetail d) = date(order(d)) MATERIALIZED INDEXED;
рд╕рдорд╛рд░реЛрд╣ рдХрд▓ рдЧрд░реНрджрд╛ рдорд┐рддрд┐ рдЕрд░реНрдбрд░ рд▓рд╛рдЗрдирдХреЛ рд▓рд╛рдЧрд┐, рдлрд┐рд▓реНрдб рдЬрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдЫ рддреНрдпреЛ рддрд╛рд▓рд┐рдХрд╛рдмрд╛рдЯ рдЕрд░реНрдбрд░ рд▓рд╛рдЗрдирд╣рд░реВ рдкрдврд┐рдиреЗрдЫред рдЬрдм рдЕрд░реНрдбрд░ рдорд┐рддрд┐ рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдиреНрдЫ, рдкреНрд░рдгрд╛рд▓реА рдЖрдлреИрд▓реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рд▓рд╛рдЗрдирдорд╛ denormalized рдорд┐рддрд┐ рдкреБрди: рдЧрдгрдирд╛ рдЧрд░реНрдиреЗрдЫред
рд▓рд╛рдн
рдпреЛ рд╕рдореНрдкреВрд░реНрдг рд╕рдВрдпрдиреНрддреНрд░ рдХреЗ рдХрд╛ рд▓рд╛рдЧрд┐ рд╣реЛ? рдХреНрд▓рд╛рд╕рд┐рдХ DBMSs рдорд╛, рдкреНрд░рд╢реНрдирд╣рд░реВ рдкреБрди: рд▓реЗрдЦреНрди рдмрд┐рдирд╛, рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛ рд╡рд╛ DBA рд▓реЗ рдХреЗрд╡рд▓ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рд╣рд░реВ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди, рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрди рд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдХрд╕рд░реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрдиреЗ рднрдиреЗрд░ рдкреНрд░рд╢реНрди рдпреЛрдЬрдирд╛рдХрд╛рд░рд▓рд╛рдИ рдмрддрд╛рдЙрди рд╕рдХреНрдЫ (рд░ HINT рд╣рд░реВ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ DBMS рд╣рд░реВрдорд╛ рдорд╛рддреНрд░ рдЙрдкрд▓рдмреНрдз рдЫрдиреН)ред рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдЬрддрд┐рд╕реБрдХреИ рдкреНрд░рдпрд╛рд╕ рдЧрд░реЗ рдкрдирд┐, рддрд┐рдиреАрд╣рд░реВрд▓реЗ рд▓реЗрдЦрдорд╛ рдкрд╣рд┐рд▓реЛ рдкреНрд░рд╢реНрди рдкреВрд░рд╛ рдЧрд░реНрди рд╕рдХреНрд╖рдо рд╣реБрдиреЗрдЫреИрдирдиреН рдУ (рд╡рд┐рднрд╛рдЧрд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛) рдкреНрд░рд╢реНрдирд╣рд░реВ рдкрд░рд┐рд╡рд░реНрддрди рдирдЧрд░реА рд╡рд╛ рдЯреНрд░рд┐рдЧрд░рд╣рд░реВ рдердк рдирдЧрд░реАред рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдпреЛрдЬрдирд╛рдорд╛, рд╡рд┐рдХрд╛рд╕рдХреЛ рдЪрд░рдгрдорд╛ рддрдкрд╛рдИрдВрд▓реЗ рдбрд╛рдЯрд╛ рднрдгреНрдбрд╛рд░рдг рд╕рдВрд░рдЪрдирд╛ рд░ рдХреБрди рдПрдХрддреНрд░реАрдХрд░рдгрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдмрд╛рд░реЗ рд╕реЛрдЪреНрдиреБ рдкрд░реНрджреИрдиред рдпреЛ рд╕рдмреИ рд╕рдЬрд┐рд▓реИ рдЙрдбрд╛рди рдорд╛, рд╕реАрдзрд╛ рд╕рдЮреНрдЪрд╛рд▓рди рдорд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред
рд╡реНрдпрд╡рд╣рд╛рд░рдорд╛ рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ ред рдХреЗрд╣реА рд╡реНрдпрдХреНрддрд┐рд╣рд░реВрд▓реЗ рд╣рд╛рддрдорд╛ рд░рд╣реЗрдХреЛ рдХрд╛рд░реНрдпрдорд╛ рдЖрдзрд╛рд░рд┐рдд рддрд░реНрдХ рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрдЫрдиреНред рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдПрд▓реНрдЧреЛрд░рд┐рджрдорд╣рд░реВ рд░ рддрд┐рдиреАрд╣рд░реВрдХреЛ рдЬрдЯрд┐рд▓рддрд╛, рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдпреЛрдЬрдирд╛рд╣рд░реВ, рди рдд рдЬреЛрдбреНрдиреЗ рдкреНрд░рдХрд╛рд░рд╣рд░реВ, рди рдХреБрдиреИ рдЕрдиреНрдп рдкреНрд░рд╛рд╡рд┐рдзрд┐рдХ рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ рдмреБрдЭреНрдЫрдиреНред рдпреА рд╡реНрдпрдХреНрддрд┐рд╣рд░реВ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВ рднрдиреНрджрд╛ рдмрдвреА рд╡реНрдпрд╛рдкрд╛рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╣реБрдиреНред рддреНрдпрд╕рдкрдЫрд┐, рдпреЛ рд╕рдмреИ рдкрд░реАрдХреНрд╖рдг рд╡рд╛ рд╕рдЮреНрдЪрд╛рд▓рдирдорд╛ рдЬрд╛рдиреНрдЫред рд▓рд╛рдореЛ рд╕рдордпрджреЗрдЦрд┐ рдЪрд▓рд┐рд░рд╣реЗрдХрд╛ рдкреНрд░рд╢реНрдирд╣рд░реВрдХреЛ рд▓рдЧрд┐рдЩ рд╕рдХреНрд╖рдо рдЧрд░реНрджрдЫред рдЬрдм рд▓рд╛рдореЛ рдХреНрд╡реЗрд░реА рдкрддреНрддрд╛ рд▓рдЧрд╛рдЗрдиреНрдЫ, рддрдм рдЕрдиреНрдп рд╡реНрдпрдХреНрддрд┐рд╣рд░реВ (рдЕрдзрд┐рдХ рдкреНрд░рд╛рд╡рд┐рдзрд┐рдХ - рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдкрдорд╛ DBA) рдХреЗрд╣реА рдордзреНрдпрд╡рд░реНрддреА рдкреНрд░рдХрд╛рд░реНрдпрдорд╛ MATERIALized рд╕рдХреНрд╖рдо рдЧрд░реНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реНрдЫрдиреНред рдпрд╕рд▓реЗ рд░реЗрдХрд░реНрдбрд┐рдЩрд▓рд╛рдИ рдереЛрд░реИ рдврд┐рд▓реЛ рдмрдирд╛рдЙрдБрдЫ (рдпрд╕рд▓реЗ рд▓реЗрдирджреЗрдирдорд╛ рдердк рдлрд┐рд▓реНрдб рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ)ред рдЬреЗ рд╣реЛрд╕реН, рдпреЛ рдХреНрд╡реЗрд░реА рдорд╛рддреНрд░ рд╣реЛрдЗрди, рдпреЛ рдкреНрд░рдХрд╛рд░реНрдп рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдЕрдиреНрдп рд╕рдмреИрд▓рд╛рдИ рдкрдирд┐ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд░реВрдкрдорд╛ рдЧрддрд┐ рджрд┐рдЗрдПрдХреЛ рдЫред рдПрдХреИ рд╕рдордпрдорд╛, рдХреБрди рдкреНрд░рдХрд╛рд░реНрдпрд▓рд╛рдИ рд╕рд╛рдХрд╛рд░ рдЧрд░реНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реНрди рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕рдЬрд┐рд▓реЛ рдЫред рджреБрдИ рдореБрдЦреНрдп рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ: рд╕рдореНрднрд╛рд╡рд┐рдд рдЗрдирдкреБрдЯ рдорд╛рдирд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ (рдпреЛ рдХрддрд┐ рд░реЗрдХрд░реНрдбрд╣рд░реВ рд╕рдореНрдмрдиреНрдзрд┐рдд рддрд╛рд▓рд┐рдХрд╛рдорд╛ рд╣реБрдиреЗрдЫрдиреН), рд░ рдХрддрд┐ рдкрдЯрдХ рдпреЛ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред
Analogues
рдЖрдзреБрдирд┐рдХ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ DBMS рд╣рд░реВрдорд╛ рд╕рдорд╛рди рд╕рдВрдпрдиреНрддреНрд░рд╣рд░реВ рдЫрдиреН: рдлрд╛рд╕реНрдЯ рд░рд┐рдлреНрд░реЗрд╢ (рдУрд░реЗрдХрд▓) рд░ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рджреГрд╢реНрдп (рдорд╛рдЗрдХреНрд░реЛрд╕рдлреНрдЯ SQL рд╕рд░реНрднрд░) рд╕рдБрдЧ рднреМрддрд┐рдХ рджреГрд╢реНрдпред PostgreSQL рдорд╛, MATERIALIZED VIEW рд▓реЗрдирджреЗрдирдорд╛ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░реНрди рд╕рдХрд┐рдБрджреИрди, рддрд░ рдЕрдиреБрд░реЛрдзрдорд╛ рдорд╛рддреНрд░ (рд░ рдзреЗрд░реИ рдХрдбрд╛ рдкреНрд░рддрд┐рдмрдиреНрдзрд╣рд░реВрд╕рдБрдЧ рдкрдирд┐), рддреНрдпрд╕реИрд▓реЗ рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рд╡рд┐рдЪрд╛рд░ рдЧрд░реНрджреИрдиреМрдВред рддрд░ рддрд┐рдиреАрд╣рд░реВрд╕рдБрдЧ рдзреЗрд░реИ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рдЫрдиреН рдЬрд╕рд▓реЗ рдЙрдиреАрд╣рд░реВрдХреЛ рдкреНрд░рдпреЛрдЧрд▓рд╛рдИ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рд░реВрдкрдорд╛ рд╕реАрдорд┐рдд рдЧрд░реНрджрдЫред
рд╕рдмреИрднрдиреНрджрд╛ рдкрд╣рд┐рд▓реЗ, рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ рдирд┐рдпрдорд┐рдд рджреГрд╢реНрдп рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрднрдПрдХреЛ рдЫ рднрдиреЗ рдорд╛рддреНрд░ рддрдкрд╛рдИрдВрд▓реЗ рднреМрддрд┐рдХреАрдХрд░рдг рд╕рдХреНрд╖рдо рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдЕрдиреНрдпрдерд╛, рддрдкрд╛рдИрдВрд▓реЗ рдпреЛ рднреМрддрд┐рдХреАрдХрд░рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдирдпрд╛рдБ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рджреГрд╢реНрдп рдкрд╣реБрдБрдЪ рдЧрд░реНрди рдмрд╛рдБрдХреА рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдкреБрди: рд▓реЗрдЦреНрдиреБрдкрд░реНрдиреЗрдЫред рд╡рд╛ рд╕рдмреИ рдХреБрд░рд╛рд▓рд╛рдИ рдЬрд╕реНрддреИ рдЫреЛрдбреНрдиреБрд╣реЛрд╕реН, рддрд░ рдпреЛ рдХрдореНрддрд┐рдорд╛ рдкреНрд░рднрд╛рд╡рд╣реАрди рд╣реБрдиреЗрдЫ рдпрджрд┐ рддреНрдпрд╣рд╛рдБ рдирд┐рд╢реНрдЪрд┐рдд рдкрд╣рд┐рд▓реЗ рдиреИ рдкреВрд░реНрд╡-рдЧрдгрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдбрд╛рдЯрд╛ рдЫ, рддрд░ рдзреЗрд░реИ рдкреНрд░рд╢реНрдирд╣рд░реВрд▓реЗ рдпрд╕рд▓рд╛рдИ рд╕рдзреИрдВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИрдирдиреН, рддрд░ рдпрд╕рд▓рд╛рдИ рдкреБрди: рдЧрдгрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
рджреЛрд╕реНрд░реЛ, рддрд┐рдиреАрд╣рд░реВрд╕рдБрдЧ рдареВрд▓реЛ рд╕рдВрдЦреНрдпрд╛рдорд╛ рдкреНрд░рддрд┐рдмрдиреНрдзрд╣рд░реВ рдЫрдиреН:
рдмрдЬреЗрдЯ
5.3.8.4 рджреНрд░реБрдд рд░рд┐рдлреНрд░реЗрд╕рдорд╛ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рддрд┐рдмрдиреНрдзрд╣рд░реВ
рднреМрддрд┐рдХ рджреГрд╢реНрдпрдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреНрд╡реЗрд░реА рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдкреНрд░рддрд┐рдмрдиреНрдзрд┐рдд рдЫ:
- рднреМрддрд┐рдХ рджреГрд╢реНрдпрдорд╛ рдирджреЛрд╣реЛрд░рд┐рдиреЗ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдЬрд╕реНрддрд╛ рд╕рдиреНрджрд░реНрднрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рд╣реБрдиреБ рд╣реБрдБрджреИрди
SYSDATE
рд░ROWNUM
.- рднреМрддрд┐рдХ рджреГрд╢реНрдпрдорд╛ рд╕рдиреНрджрд░реНрднрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рд╣реБрдиреБ рд╣реБрдБрджреИрди
RAW
orLONG
RAW
рдбрд╛рдЯрд╛ рдкреНрд░рдХрд╛рд░рд╣рд░реВред- рдпрд╕рдорд╛ a рд╕рдорд╛рд╡реЗрд╢ рд╣реБрди рд╕рдХреНрджреИрди
SELECT
рд╕реВрдЪреА subqueryред- рдпрд╕рд▓реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рддреНрдордХ рдХрд╛рд░реНрдпрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрди рд╕рдХреНрджреИрди (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐,
RANK
) рдорд╛SELECT
рдЦрдгреНрдб- рдпрд╕рд▓реЗ рдПрдЙрдЯрд╛ рддрд╛рд▓рд┐рдХрд╛рд▓рд╛рдИ рд╕рдиреНрджрд░реНрдн рдЧрд░реНрди рд╕рдХреНрджреИрди рдЬрд╕рдорд╛ рдП
XMLIndex
рд╕реВрдЪрдХрд╛рдВрдХ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЫред- рдпрд╕рдорд╛ a рд╕рдорд╛рд╡реЗрд╢ рд╣реБрди рд╕рдХреНрджреИрди
MODEL
рдЦрдгреНрдб- рдпрд╕рдорд╛ a рд╕рдорд╛рд╡реЗрд╢ рд╣реБрди рд╕рдХреНрджреИрди
HAVING
subquery рдХреЛ рд╕рд╛рде рдЦрдгреНрдбред- рдпрд╕рд▓реЗ рдиреЗрд╕реНрдЯреЗрдб рдХреНрд╡реЗрд░реАрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрди рд╕рдХреНрджреИрди
ANY
,ALL
рд╡рд╛NOT
EXISTS
.- рдпрд╕рдорд╛ a рд╕рдорд╛рд╡реЗрд╢ рд╣реБрди рд╕рдХреНрджреИрди
[START WITH тАж] CONNECT BY
рдЦрдгреНрдб- рдпрд╕рд▓реЗ рд╡рд┐рднрд┐рдиреНрди рд╕рд╛рдЗрдЯрд╣рд░реВрдорд╛ рдзреЗрд░реИ рд╡рд┐рд╡рд░рдг рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрди рд╕рдХреНрджреИрдиред
ON
COMMIT
рднреМрддрд┐рдХ рджреГрд╢реНрдпрд╣рд░реВрдорд╛ рдЯрд╛рдврд╛рдХреЛ рд╡рд┐рд╡рд░рдг рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВ рд╣реБрди рд╕рдХреНрджреИрдиред- рдиреЗрд╕реНрдЯреЗрдб рдордЯреЗрд░рд┐рдпрд▓рд╛рдЗрдЬреНрдб рджреГрд╢реНрдпрд╣рд░реВрдорд╛ рдЬреЛрдбрд┐рдПрдХреЛ рд╡рд╛ рд╕рдордЧреНрд░ рд╣реБрдиреБрдкрд░реНрдЫред
- рдП рдХреЛ рд╕рд╛рде рд╕рд╛рдореЗрд▓ рджреГрд╢реНрдпрд╣рд░реВ рд░ рднреМрддрд┐рдХреАрдХреГрдд рд╕рдордЧреНрд░ рджреГрд╢реНрдпрд╣рд░реВ
GROUP
BY
рдЦрдгреНрдб рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛-рд╕рдВрдЧрдард┐рдд рддрд╛рд▓рд┐рдХрд╛рдмрд╛рдЯ рдЪрдпрди рдЧрд░реНрди рд╕рдХреНрджреИрдиред5.3.8.5 рд╕рд╛рдореЗрд▓ рднреНрдпреВрд╣рд░реВрдорд╛ рдорд╛рддреНрд░ рдлрд╛рд╕реНрдЯ рд░рд┐рдлреНрд░реЗрд╕рдорд╛ рдкреНрд░рддрд┐рдмрдиреНрдзрд╣рд░реВ
рдХреЗрд╡рд▓ рдЬреЛрдбрд┐рдиреЗ рд░ рдХреБрдиреИ рдкрдирд┐ рд╕рдореБрдЪреНрдЪрдпрд╣рд░реВрдорд╛ рджреНрд░реБрдд рд░рд┐рдлреНрд░реЗрд╕рдорд╛ рдирд┐рдореНрди рдкреНрд░рддрд┐рдмрдиреНрдзрд╣рд░реВ рдЫреИрдирдиреНред
- "рдмрд╛рдЯ рд╕рдмреИ рдкреНрд░рддрд┐рдмрдиреНрдзрд╣рд░реВ
рдлрд╛рд╕реНрдЯ рд░рд┐рдлреНрд░реЗрд╕рдорд╛ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рддрд┐рдмрдиреНрдзрд╣рд░реВ "ред- рддрд┐рдиреАрд╣рд░реВрд╕рдБрдЧ рд╣реБрди рд╕рдХреНрджреИрди
GROUP
BY
рдЦрдгреНрдб рд╡рд╛ рд╕рдореБрдЪреНрдЪрдпред- рдорд╛ рд╕рдмреИ рдЯреЗрдмрд▓ рдХреЛ рд░реЛрд╡рд┐рдб
FROM
рд╕реВрдЪреА рдорд╛ рджреЗрдЦрд╛ рдкрд░реНрдиреБ рдкрд░реНрдЫSELECT
рдкреНрд░рд╢реНрдирдХреЛ рд╕реВрдЪреАред- рднреМрддрд┐рдХ рджреГрд╢реНрдп рд▓рдЧрд╣рд░реВ рд╕рдмреИ рдЖрдзрд╛рд░ рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд░реЛрд╡рд┐рдбрд╣рд░реВрд╕рдБрдЧ рдЕрд╡рд╕реНрдерд┐рдд рд╣реБрдиреБрдкрд░реНрдЫ
FROM
рдкреНрд░рд╢реНрдирдХреЛ рд╕реВрдЪреАред- рддрдкрд╛рдИрд▓реЗ рдзреЗрд░реИ рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВрдмрд╛рдЯ рдЫрд┐рдЯреЛ рд░рд┐рдлреНрд░реЗрд╕ рдЧрд░реНрди рдорд┐рд▓реНрдиреЗ рд╡рд╕реНрддреБрдЧрдд рджреГрд╢реНрдп рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрди рдЬрд╕рдорд╛ рд╡рд╕реНрддреБ рдкреНрд░рдХрд╛рд░рдХреЛ рд╕реНрддрдореНрдн рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫред
SELECT
рд╡рд┐рд╡рд░рдгредрд╕рд╛рдереИ, рддрдкрд╛рдИрдВрд▓реЗ рд░реЛрдЬреЗрдХреЛ рд░рд┐рдлреНрд░реЗрд╕ рд╡рд┐рдзрд┐ рдЗрд╖реНрдЯрддрдо рд░реВрдкрдорд╛ рдкреНрд░рднрд╛рд╡рдХрд╛рд░реА рд╣реБрдиреЗрдЫреИрди рдпрджрд┐:
- рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреНрд╡реЗрд░реАрд▓реЗ рдмрд╛рд╣рд┐рд░реА рдЬреЛрдбрдХреЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫ рдЬреБрди рднрд┐рддреНрд░реА рдЬреЛрдбрд┐рдПрдХреЛ рдЬрд╕реНрддреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдЧрд░реНрджрдЫред рдпрджрд┐ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреНрд╡реЗрд░реАрдорд╛ рдпрд╕реНрддреЛ рдЬрдбрд╛рди рд╕рдорд╛рд╡реЗрд╢ рдЫ рднрдиреЗ, рднрд┐рддреНрд░реА рдЬреЛрдб рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрди рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреНрд╡реЗрд░реА рдкреБрди: рд▓реЗрдЦреНрдиреЗ рд╡рд┐рдЪрд╛рд░ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
- рдпреЛ
SELECT
рднреМрддрд┐рдХ рджреГрд╢реНрдпрдХреЛ рд╕реВрдЪреАрд▓реЗ рдзреЗрд░реИ рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВрдмрд╛рдЯ рд╕реНрддрдореНрднрд╣рд░реВрдорд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫред5.3.8.6 рдПрдЧреНрд░реАрдЧреЗрдЯреНрд╕рдХреЛ рд╕рд╛рде рднреМрддрд┐рдХ рджреГрд╢реНрдпрд╣рд░реВрдорд╛ рджреНрд░реБрдд рд░рд┐рдлреНрд░реЗрд╕рдорд╛ рдкреНрд░рддрд┐рдмрдиреНрдзрд╣рд░реВ
рдПрдЧреНрд░реАрдЧреЗрдЯреНрд╕ рд╡рд╛ рдЬреЛрдбрд┐рд╣рд░реБ рд╕рдВрдЧ рднреМрддрд┐рдХ рджреГрд╢реНрдпрд╣рд░реБ рдХреЛ рд▓рд╛рдЧреА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдкреНрд░рд╢реНрдирд╣рд░реБ рд▓рд╛рдИ рдЫрд┐рдЯреЛ рд░рд┐рдлреНрд░реЗрд╕ рдорд╛ рдирд┐рдореНрди рдкреНрд░рддрд┐рдмрдиреНрдзрд╣рд░реБ рдЫрдиреН:
- "рдмрд╛рдЯ рд╕рдмреИ рдкреНрд░рддрд┐рдмрдиреНрдзрд╣рд░реВ
рдлрд╛рд╕реНрдЯ рд░рд┐рдлреНрд░реЗрд╕рдорд╛ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рддрд┐рдмрдиреНрдзрд╣рд░реВ "редрджреНрд░реБрдд рд░рд┐рдлреНрд░реЗрд╕ рджреБрдмреИрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерд┐рдд рдЫ
ON
COMMIT
рд░ON
DEMAND
рднреМрддрд┐рдХ рджреГрд╢реНрдпрд╣рд░реВ, рдпрджреНрдпрдкрд┐ рдирд┐рдореНрди рдкреНрд░рддрд┐рдмрдиреНрдзрд╣рд░реВ рд▓рд╛рдЧреВ рд╣реБрдиреНрдЫрдиреН:
- рднреМрддрд┐рдХ рджреГрд╢реНрдпрдорд╛ рднрдПрдХрд╛ рд╕рдмреИ рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВрдорд╛ рднреМрддрд┐рдХ рджреГрд╢реНрдп рд▓рдЧрд╣рд░реВ рд╣реБрдиреБрдкрд░реНрдЫ, рд░ рднреМрддрд┐рдХ рджреГрд╢реНрдп рд▓рдЧрд╣рд░реВ рд╣реБрдиреБрдкрд░реНрдЫ:
- рднреМрддрд┐рдХ рджреГрд╢реНрдпрдорд╛ рд╕рдиреНрджрд░реНрдн рдЧрд░рд┐рдПрдХреЛ рддрд╛рд▓рд┐рдХрд╛рдмрд╛рдЯ рд╕рдмреИ рд╕реНрддрдореНрднрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
- рд╕рдВрдЧ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН
ROWID
рд░INCLUDING
NEW
VALUES
.- рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН
SEQUENCE
рдХреНрд▓рдЬ рдпрджрд┐ рддрд╛рд▓рд┐рдХрд╛рдорд╛ рд╕рдореНрдорд┐рд▓рд┐рдд/рдбрд╛рдпрд░реЗрдХреНрдЯ-рд▓реЛрдбрд╣рд░реВ, рдореЗрдЯрд╛рдЙрдиреЗрд╣рд░реВ, рд░ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХрд╣рд░реВрдХреЛ рдорд┐рд╢реНрд░рдг рд╣реБрдиреЗ рдЕрдкреЗрдХреНрд╖рд╛ рдЧрд░рд┐рдПрдХреЛ рдЫред
- рдХреЗрд╡рд▓
SUM
,COUNT
,AVG
,STDDEV
,VARIANCE
,MIN
рд░MAX
рдЫрд┐рдЯреЛ рд░рд┐рдлреНрд░реЗрд╕рдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерд┐рдд рдЫрдиреНредCOUNT(*)
рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрдиреБрдкрд░реНрдЫред- рд╕рдордЧреНрд░ рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдХреЛ рдмрд╛рд╣рд┐рд░реА рднрд╛рдЧрдХреЛ рд░реВрдкрдорд╛ рдорд╛рддреНрд░ рд╣реБрдиреБрдкрд░реНрджрдЫред рдЕрд░реНрдерд╛рддреН, рд╕рдордЧреНрд░ рдЬрд╕реНрддреИ
AVG(AVG(x))
orAVG(x)
+AVG(x)
рдЕрдиреБрдорддрд┐ рдЫреИрдиред- рдкреНрд░рддреНрдпреЗрдХ рд╕рдордЧреНрд░рдХреЛ рд▓рд╛рдЧрд┐ рдЬрд╕реНрддреИ
AVG(expr)
, рд╕рдореНрдмрдиреНрдзрд┐рддCOUNT(expr)
рдЙрдкрд╕реНрдерд┐рдд рд╣реБрдиреБрдкрд░реНрдЫред Oracle рд╕рд┐рдлрд╛рд░рд┐рд╕ рдЧрд░реНрдиреБрднрдпреЛSUM(expr)
рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрдиред- If
VARIANCE(expr)
orSTDDEV(expr
) рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░рд┐рдПрдХреЛ рдЫ,COUNT(expr)
рд░SUM(expr)
рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрдиреБрдкрд░реНрдЫред Oracle рд╕рд┐рдлрд╛рд░рд┐рд╕ рдЧрд░реНрдиреБрднрдпреЛSUM(expr *expr)
рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрдиред- рдпреЛ
SELECT
рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреНрд╡реЗрд░реАрдорд╛ рд╕реНрддрдореНрдн рдзреЗрд░реИ рдЖрдзрд╛рд░ рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВрдмрд╛рдЯ рд╕реНрддрдореНрднрд╣рд░реВрд╕рдБрдЧ рдЬрдЯрд┐рд▓ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реБрди рд╕рдХреНрджреИрдиред рдпрд╕рдХреЛ рд╕рдореНрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рднрдиреЗрдХреЛ рдиреЗрд╕реНрдЯреЗрдб рдордЯреЗрд░рд┐рдпрд▓рд╛рдЗрдЬреНрдб рджреГрд╢реНрдп рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБ рд╣реЛред- рдпреЛ
SELECT
рд╕реВрдЪреАрдорд╛ рд╕рдмреИ рд╕рдорд╛рд╡реЗрд╢ рд╣реБрдиреБрдкрд░реНрдЫGROUP
BY
рд╕реНрддрдореНрднрд╣рд░реВред- рднреМрддрд┐рдХ рджреГрд╢реНрдп рдПрдХ рд╡рд╛ рдзреЗрд░реИ рдЯрд╛рдврд╛рдХреЛ рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВрдорд╛ рдЖрдзрд╛рд░рд┐рдд рдЫреИрдиред
- рдпрджрд┐ рддрдкрд╛рдИрдВ рдПрдХ рдкреНрд░рдпреЛрдЧ
CHAR
рднреМрддрд┐рдХ рджреГрд╢реНрдп рд▓рдЧрдХреЛ рдлрд┐рд▓реНрдЯрд░ рд╕реНрддрдореНрднрд╣рд░реВрдорд╛ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░, рдорд╛рд╕реНрдЯрд░ рд╕рд╛рдЗрдЯрдХреЛ рдХреНрдпрд╛рд░реЗрдХреНрдЯрд░ рд╕реЗрдЯрд╣рд░реВ рд░ рднреМрддрд┐рдХ рджреГрд╢реНрдп рд╕рдорд╛рди рд╣реБрдиреБрдкрд░реНрдЫред- рдпрджрд┐ рднреМрддрд┐рдХ рджреГрд╢реНрдпрдорд╛ рдирд┐рдореНрди рдордзреНрдпреЗ рдПрдЙрдЯрд╛ рдЫ рднрдиреЗ, рджреНрд░реБрдд рд░рд┐рдлреНрд░реЗрд╕рд▓рд╛рдИ рдкрд░рдореНрдкрд░рд╛рдЧрдд DML рдШреБрд╕рд╛рдЙрдиреЗ рд░ рдкреНрд░рддреНрдпрдХреНрд╖ рд▓реЛрдбрд╣рд░реВрдорд╛ рдорд╛рддреНрд░ рд╕рдорд░реНрдерди рдЧрд░рд┐рдиреНрдЫред
- рд╕рдВрдЧ рднреМрддрд┐рдХ рджреГрд╢реНрдпрд╣рд░реБ
MIN
orMAX
рд╕рдореБрдЪреНрдЪрдп- рднреМрддрд┐рдХ рджреГрд╢реНрдпрд╣рд░реВ рдЫрдиреН
SUM(expr)
рддрд░ рд╣реЛрдЗрдиCOUNT(expr)
- рдмрд┐рдирд╛ рднреМрддрд┐рдХ рджреГрд╢реНрдпрд╣рд░реВ
COUNT(*)
рдпрд╕реНрддреЛ рднреМрддрд┐рдХ рджреГрд╢реНрдпрд▓рд╛рдИ рд╕рдореНрдорд┐рд▓рд┐рдд-рдорд╛рддреНрд░ рднреМрддрд┐рдХ рджреГрд╢реНрдп рднрдирд┐рдиреНрдЫред
- рд╕рдВрдЧ рдПрдХ рднреМрддрд┐рдХ рджреГрд╢реНрдп
MAX
orMIN
рдореЗрдЯрд╛рдЙрди рд╡рд╛ рдорд┐рд╢реНрд░рд┐рдд DML рдХрдердирд╣рд░реВ рдкрдЫрд┐ рдЫрд┐рдЯреЛ рд░рд┐рдлреНрд░реЗрд╕ рдЧрд░реНрди рдорд┐рд▓реНрдЫ рдпрджрд┐ рдпрд╕рдорд╛ a рдЫреИрди рднрдиреЗWHERE
рдЦрдгреНрдб
рдореЗрдЯрд╛рдПрдкрдЫрд┐ рд╡рд╛ рдорд┐рд╢реНрд░рд┐рдд DML рдкрдЫрд┐ рдЕрдзрд┐рдХрддрдо/рдорд┐рдиреЗрдЯ рджреНрд░реБрдд рд░рд┐рдлреНрд░реЗрд╕ рдЗрдиреНрд╕рд░реНрдЯ-рдУрдиреНрд▓реА рдХреЗрд╕ рдЬрд╕реНрддреИ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реБрдБрджреИрдиред рдпрд╕рд▓реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╕рдореВрд╣рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЕрдзрд┐рдХрддрдо/рдорд┐рдирдЯ рдорд╛рдирд╣рд░реВ рдореЗрдЯрд╛рдЙрдБрдЫ рд░ рдкреБрди: рдЧрдгрдирд╛ рдЧрд░реНрджрдЫред рддрдкрд╛рдИрдВ рдпрд╕рдХреЛ рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рднрд╛рд╡ рдмрд╛рд░реЗ рд╕рдЪреЗрдд рд╣реБрди рдЖрд╡рд╢реНрдпрдХ рдЫред- рдорд╛ рдирд╛рдорд┐рдд рджреГрд╢реНрдп рд╡рд╛ рд╕рдмрдХреНрд╡реЗрд░реАрд╣рд░реВ рд╕рд╣рд┐рдд рднреМрддрд┐рдХ рджреГрд╢реНрдпрд╣рд░реВ
FROM
рджреГрд╢реНрдпрд╣рд░реВ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдорд░реНрдЬ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ рднрдиреЗ рдЦрдгреНрдбрд▓рд╛рдИ рджреНрд░реБрдд рд░реВрдкрдорд╛ рддрд╛рдЬрд╛ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рдЬрд╛рдирдХрд╛рд░реАрдХреЛ рд▓рд╛рдЧрд┐ рдХреБрди рджреГрд╢реНрдпрд╣рд░реВ рдорд░реНрдЬ рд╣реБрдиреЗрдЫрдиреН, рд╣реЗрд░реНрдиреБрд╣реЛрд╕реНрдУрд░реЗрдХрд▓ рдбрд╛рдЯрд╛рдмреЗрд╕ SQL тАЛтАЛрднрд╛рд╖рд╛ рд╕рдиреНрджрд░реНрдн .- рдпрджрд┐ рддреНрдпрд╣рд╛рдБ рдХреБрдиреИ рдмрд╛рд╣рд┐рд░реА рдЬреЛрдбрд┐рд╣рд░реВ рдЫреИрдирдиреН рднрдиреЗ, рддрдкрд╛рдИрдВрд╕рдБрдЧ рд╕реНрд╡реЗрдЪреНрдЫрд╛рдЪрд╛рд░реА рдЫрдиреЛрдЯ рд╣реБрди рд╕рдХреНрдЫ рд░ рдорд╛ рд╕рд╛рдореЗрд▓ рд╣реБрди рд╕рдХреНрдЫ
WHERE
рдЦрдгреНрдб- рдмрд╛рд╣рд┐рд░реА рдЬреЛрдбрд┐рд╣рд░реБ рд╕рдВрдЧ рднреМрддрд┐рдХ рд╕рдордЧреНрд░ рджреГрд╢реНрдпрд╣рд░реБ рдкрд╛рд░рдВрдкрд░рд┐рдХ DML рд░ рдкреНрд░рддреНрдпрдХреНрд╖ рд▓реЛрдб рдкрдЫрд┐ рдЫрд┐рдЯреЛ рд░рд┐рдлреНрд░реЗрд╕ рдпреЛрдЧреНрдп рдЫрдиреН, рдХреЗрд╡рд▓ рдмрд╛рд╣рд┐рд░реА рддрд╛рд▓рд┐рдХрд╛ рдкрд░рд┐рдорд╛рд░реНрдЬрди рдЧрд░рд┐рдПрдХреЛ рдЫред рд╕рд╛рдереИ, рднрд┐рддреНрд░реА рдЬреЛрдбреНрдиреЗ рддрд╛рд▓рд┐рдХрд╛рдХреЛ рдЬреЛрдбрд┐рдиреЗ рд╕реНрддрдореНрднрд╣рд░реВрдорд╛ рдЕрджреНрд╡рд┐рддреАрдп рдЕрд╡рд░реЛрдзрд╣рд░реВ рдЕрд╡рд╕реНрдерд┐рдд рд╣реБрдиреБрдкрд░реНрдЫред рдпрджрд┐ рддреНрдпрд╣рд╛рдБ рдмрд╛рд╣рд┐рд░реА рдЬреЛрдбрд╣рд░реВ рдЫрдиреН рднрдиреЗ, рд╕рдмреИ рдЬреЛрдбрд╣рд░реВ рдЬреЛрдбрд┐рдПрдХреЛ рд╣реБрдиреБрдкрд░реНрдЫ
AND
s рд░ рд╕рдорд╛рдирддрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрдкрд░реНрдЫ (=
) рдЕрдкрд░реЗрдЯрд░ред- рд╕рдВрдЧ рднреМрддрд┐рдХ рджреГрд╢реНрдпрд╣рд░реБ рдХреЛ рд▓рд╛рдЧреА
CUBE
,ROLLUP
, рд╕рдореВрд╣рдмрджреНрдз рд╕реЗрдЯрд╣рд░реВ, рд╡рд╛ рддрд┐рдиреАрд╣рд░реВрдХреЛ рд╕рдВрдпреЛрдЬрди, рдирд┐рдореНрди рдкреНрд░рддрд┐рдмрдиреНрдзрд╣рд░реВ рд▓рд╛рдЧреВ рд╣реБрдиреНрдЫрдиреН:
- рдпреЛ
SELECT
рд╕реВрдЪреАрдорд╛ рд╕рдореВрд╣реАрдХрд░рдг рд╡рд┐рднреЗрджрдХ рд╕рдорд╛рд╡реЗрд╢ рд╣реБрдиреБрдкрд░реНрдЫ рдЬреБрди рдпрд╛ рдд a рд╣реБрди рд╕рдХреНрдЫGROUPING_ID
рд╕рдмреИ рдорд╛ рдХрд╛рд░реНрдпGROUP
BY
рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╡рд╛GROUPING
рдкреНрд░рддреНрдпреЗрдХрдХреЛ рд▓рд╛рдЧрд┐ рдПрдХ рдХрд╛рд░реНрдп рдЧрд░реНрджрдЫGROUP
BY
рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ред рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, рдпрджрд┐GROUP
BY
рднреМрддрд┐рдХ рджреГрд╢реНрдпрдХреЛ рдЦрдгреНрдб рд╣реЛ "GROUP
BY
CUBE(a, b)
", рддреНрдпрд╕рдкрдЫрд┐ рджSELECT
рд╕реВрдЪреАрдорд╛ рд╕рдорд╛рд╡реЗрд╢ рд╣реБрдиреБрдкрд░реНрдЫ "GROUPING_ID(a, b)
"рд╡рд╛"GROUPING(a)
AND
GROUPING(b)
┬╗ рднреМрддрд┐рдХ рджреГрд╢реНрдпрд▓рд╛рдИ рдЫрд┐рдЯреЛ рд░рд┐рдлреНрд░реЗрд╕ рдЧрд░реНрди рдорд┐рд▓реНрдиреЗредGROUP
BY
рдХреБрдиреИ рдкрдирд┐ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╕рдореВрд╣рд╣рд░реВрдХреЛ рдкрд░рд┐рдгрд╛рдо рд╣реБрдиреБ рд╣реБрдБрджреИрдиред рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, "GROUP BY a, ROLLUP(a, b)
"рдЫрд┐рдЯреЛ рд░рд┐рдлреНрд░реЗрд╕ рдЧрд░реНрди рдорд┐рд▓реНрджреИрди рдХрд┐рдирднрдиреЗ рдпрд╕рд▓реЗ рдирдХреНрдХрд▓реА рд╕рдореВрд╣рд╣рд░реВрдорд╛ рдкрд░рд┐рдгрд╛рдо рджрд┐рдиреНрдЫ"(a), (a, b), AND (a)
"ред5.3.8.7 UNION ALL рд╕рдБрдЧ рднреМрддрд┐рдХ рджреГрд╢реНрдпрд╣рд░реВрдорд╛ рджреНрд░реБрдд рд░рд┐рдлреНрд░реЗрд╕рдорд╛ рдкреНрд░рддрд┐рдмрдиреНрдзрд╣рд░реВ
рдХреЛ рд╕рд╛рде рднреМрддрд┐рдХ рджреГрд╢реНрдп
UNION
ALL
рд╕реЗрдЯ рдЕрдкрд░реЗрдЯрд░ рд╕рдорд░реНрдердиREFRESH
FAST
рд╡рд┐рдХрд▓реНрдк рдпрджрд┐ рдирд┐рдореНрди рд╕рд░реНрддрд╣рд░реВ рд╕рдиреНрддреБрд╖реНрдЯ рдЫрдиреН:
- рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреНрд╡реЗрд░реАрдорд╛ рд╣реБрдиреБрдкрд░реНрдЫ
UNION
ALL
рд╢реАрд░реНрд╖ рд╕реНрддрд░рдорд╛ рдЕрдкрд░реЗрдЯрд░редрдпреЛ
UNION
ALL
рдЕрдкрд░реЗрдЯрд░рд▓рд╛рдИ рд╕рдмрдХреНрд╡реЗрд░реА рднрд┐рддреНрд░ рдЗрдореНрдмреЗрдб рдЧрд░реНрди рд╕рдХрд┐рдБрджреИрди, рдПрдЙрдЯрд╛ рдЕрдкрд╡рд╛рджрдХреЛ рд╕рд╛рде: TheUNION
ALL
рдорд╛ subquery рдорд╛ рд╣реБрди рд╕рдХреНрдЫFROM
рдЦрдгреНрдб рдкрд░рд┐рднрд╛рд╖рд┐рдд рдкреНрд░рд╢реНрди рдлрд╛рд░рдо рдХреЛ рд╣реЛSELECT * FROM
(рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН рд╡рд╛ рд╕рдмрдХреНрд╡реЗрд░реАрд╕рдБрдЧUNION
ALL
) рдирд┐рдореНрди рдЙрджрд╛рд╣рд░рдгрдорд╛ рдЬрд╕реНрддреИ:рджреГрд╢реНрдп рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН 'рдЬреЛрдиреНрд╕'); MATERIALized View unionall_inside_view_mv REFRESH FAST ON DEMAND SELECT * FROM view_with_unionall;рдзреНрдпрд╛рди рджрд┐рдиреБрд╣реЛрд╕реН рдХрд┐ рджреГрд╢реНрдп
view_with_unionall
рдЫрд┐рдЯреЛ рд░рд┐рдлреНрд░реЗрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдЖрд╡рд╢реНрдпрдХрддрд╛рд╣рд░реВ рдкреВрд░рд╛ рдЧрд░реНрджрдЫред- рдкреНрд░рддреНрдпреЗрдХ рдХреНрд╡реЗрд░реА рдмреНрд▓рдХ рдорд╛
UNION
ALL
рдХреНрд╡реЗрд░реАрд▓реЗ рдПрдЧреНрд░реАрдЧреЗрдЯреНрд╕рдХреЛ рд╕рд╛рде рджреНрд░реБрдд рд░рд┐рдлреНрд░реЗрд╕ рдЧрд░реНрди рдорд┐рд▓реНрдиреЗ рдордЯреЗрд░рд┐рдпрд▓рд╛рдЗрдЬреНрдб рджреГрд╢реНрдп рд╡рд╛ рдЬреЛрдбрд╣рд░реВрд╕рдБрдЧ рджреНрд░реБрдд рд░рд┐рдлреНрд░реЗрд╕ рдЧрд░реНрди рдорд┐рд▓реНрдиреЗ рднреМрддрд┐рдХ рджреГрд╢реНрдпрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛рд╣рд░реВ рдкреВрд░рд╛ рдЧрд░реНрдиреБрдкрд░реНрдЫредрдЙрдкрдпреБрдХреНрдд рднреМрддрд┐рдХ рджреГрд╢реНрдп рд▓рдЧрд╣рд░реВ рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВрдорд╛ рдЫрд┐рдЯреЛ рд░рд┐рдлреНрд░реЗрд╕ рдЧрд░реНрди рдорд┐рд▓реНрдиреЗ рд╕рд╛рдордЧреНрд░реА рджреГрд╢реНрдпрдХреЛ рд▓рд╛рдЧрд┐ рдЖрд╡рд╢реНрдпрдХ рд░реВрдкрдорд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрдкрд░реНрдЫред
рдзреНрдпрд╛рди рджрд┐рдиреБрд╣реЛрд╕реН рдХрд┐ рдУрд░реЗрдХрд▓ рдбрд╛рдЯрд╛рдмреЗрд╕рд▓реЗ рдкрдирд┐ рдПрдХрд▓ рддрд╛рд▓рд┐рдХрд╛ рднреМрддрд┐рдХ рджреГрд╢реНрдпрдХреЛ рд╡рд┐рд╢реЗрд╖ рдХреЗрд╕рд▓рд╛рдИ рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ рдЬреБрди рдЬреЛрдбрд┐рдПрдХреЛ рдорд╛рддреНрд░ рд╣реЛредROWID
рд╕реНрддрдореНрдн рдорд╛ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░рд┐рдПрдХреЛ рдЫSELECT
рд╕реВрдЪреА рд░ рднреМрддрд┐рдХ рджреГрд╢реНрдп рд▓рдЧ рдорд╛ред рдпреЛ рджреГрд╢реНрдпрдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреНрд╡реЗрд░реАрдорд╛ рджреЗрдЦрд╛рдЗрдПрдХреЛ рдЫview_with_unionall
.- рдпреЛ
SELECT
рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рд╢реНрдирдХреЛ рд╕реВрдЪреАрдорд╛ рд╕рдорд╛рд╡реЗрд╢ рд╣реБрдиреБрдкрд░реНрдЫUNION
ALL
рдорд╛рд░реНрдХрд░, рд░UNION
ALL
рд╕реНрддрдореНрднрдорд╛ рдкреНрд░рддреНрдпреЗрдХрдорд╛ рдлрд░рдХ рд╕реНрдерд┐рд░ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рд╡рд╛ рд╕реНрдЯреНрд░рд┐рдЩ рдорд╛рди рд╣реБрдиреБрдкрд░реНрдЫUNION
ALL
рд╕рд╛рдЦрд╛ред рдпрд╕рдмрд╛рд╣реЗрдХ, рдорд╛рд░реНрдХрд░ рд╕реНрддрдореНрдн рдПрдЙрдЯреИ рдХреНрд░рдордмрджреНрдз рд╕реНрдерд┐рддрд┐рдорд╛ рджреЗрдЦрд╛ рдкрд░реНрджрдЫSELECT
рдкреНрд░рддреНрдпреЗрдХ рдХреНрд╡реЗрд░реА рдмреНрд▓рдХрдХреЛ рд╕реВрдЪреАред рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН"UNION ALL рдорд╛рд░реНрдХрд░ рд░ рдХреНрд╡реЗрд░реА рдкреБрди: рд▓реЗрдЦреНрдиреБрд╣реЛрд╕реН ┬╗ рд╕рдореНрдмрдиреНрдзрдорд╛ рдердк рдЬрд╛рдирдХрд╛рд░реАрдХреЛ рд▓рд╛рдЧрд┐UNION
ALL
рдорд╛рд░реНрдХрд░рд╣рд░реВ- рдХреЗрд╣рд┐ рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рдЬрд╕реНрддреИ рдмрд╛рд╣рд┐рд░реА рдЬреЛрдбрд╣рд░реВ, рд╕рдореНрдорд┐рд▓рд┐рдд-рдорд╛рддреНрд░ рд╕рдордЧреНрд░ рднреМрддрд┐рдХ рджреГрд╢реНрдп рдХреНрд╡реЗрд░реАрд╣рд░реВ рд░ рд░рд┐рдореЛрдЯ рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВ рднреМрддрд┐рдХ рджреГрд╢реНрдпрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерд┐рдд рдЫреИрдирдиреНред
UNION
ALL
ред рдиреЛрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рддрдерд╛рдкрд┐, рдкреНрд░рддрд┐рдХреГрддрд┐рдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХрд╛ рднреМрддрд┐рдХ рджреГрд╢реНрдпрд╣рд░реВ, рдЬрд╕рдорд╛ рдЬреЛрдбрд┐рд╣рд░реВ рд╡рд╛ рд╕рдореБрдЪреНрдЪрдпрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рд╣реБрдБрджреИрдирдиреН, рдЪрд╛рдБрдбреИ рд░рд┐рдлреНрд░реЗрд╕ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ рдЬрдмUNION
ALL
рд╡рд╛ рдЯрд╛рдврд╛рдХреЛ рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред- рд╕рдВрдЧрддрддрд╛ рдкреНрд░рд╛рд░рдореНрднрд┐рдХ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ 9.2.0 рд╡рд╛ рдЙрдЪреНрдЪ рдорд╛ рдПрдХ рдЫрд┐рдЯреЛ рд░рд┐рдлреНрд░реЗрд╕ рдпреЛрдЧреНрдп рднреМрддрд┐рдХ рджреГрд╢реНрдп рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╕реЗрдЯ рд╣реБрдиреБрдкрд░реНрдЫред
UNION
ALL
.
рдо рдУрд░реЗрдХрд▓ рдлреНрдпрд╛рдирд╣рд░реВрд▓рд╛рдИ рдЕрдкрдорд╛рди рдЧрд░реНрди рдЪрд╛рд╣рдиреНрди, рддрд░ рддрд┐рдиреАрд╣рд░реВрдХреЛ рдкреНрд░рддрд┐рдмрдиреНрдзрд╣рд░реВрдХреЛ рд╕реВрдЪреАрдХреЛ рдЖрдзрд╛рд░рдорд╛, рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ рдХрд┐ рдпреЛ рд╕рдВрдпрдиреНрддреНрд░ рд╕рд╛рдорд╛рдиреНрдп рдЕрд╡рд╕реНрдерд╛рдорд╛ рд▓реЗрдЦрд┐рдПрдХреЛ рдерд┐рдПрди, рдХреБрдиреИ рдкреНрд░рдХрд╛рд░рдХреЛ рдореЛрдбреЗрд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░, рддрд░ рд╣рдЬрд╛рд░реМрдВ рднрд╛рд░рддреАрдпрд╣рд░реВрджреНрд╡рд╛рд░рд╛, рдЬрд╣рд╛рдБ рд╕рдмреИрд▓рд╛рдИ рдЕрд╡рд╕рд░ рджрд┐рдЗрдПрдХреЛ рдерд┐рдпреЛред рдЖ-рдЖрдлреНрдиреЛ рд╢рд╛рдЦрд╛ рд▓реЗрдЦреНрдиреБрд╣реЛрд╕реН, рд░ рддрд┐рдиреАрд╣рд░реВ рдкреНрд░рддреНрдпреЗрдХрд▓реЗ рдЖрдлреВрд▓реЗ рд╕рдХреНрджреЛ рдЧрд░реЗред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддрд░реНрдХрдХреЛ рд▓рд╛рдЧрд┐ рдпреЛ рдореЗрдХрд╛рдирд┐рдЬрдо рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБ рднрдиреЗрдХреЛ рдорд╛рдЗрдирдлрд┐рд▓реНрдбрдорд╛ рд╣рд┐рдВрдбреНрдиреБ рдЬрд╕реНрддреИ рд╣реЛред рддрдкрд╛рдИрдВрд▓реЗ рдХреБрдиреИ рдкрдирд┐ рд╕рдордпрдорд╛ рдЧреИрд░-рд╕реНрдкрд╖реНрдЯ рдкреНрд░рддрд┐рдмрдиреНрдзрд╣рд░реВ рдерд┐рдЪреЗрд░ рдЦрд╛рди рдкрд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдпреЛ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрджрдЫ рдПрдХ рдЕрд▓рдЧ рдкреНрд░рд╢реНрди рд╣реЛ, рддрд░ рдпреЛ рдпрд╕ рд▓реЗрдЦ рдХреЛ рджрд╛рдпрд░рд╛ рдмрд╛рд╣рд┐рд░ рдЫред
рдорд╛рдИрдХреНрд░реЛрд╕рдлреНрдЯ SQL рд╕рд░реНрд╡рд░
рдердк рдЖрд╡рд╢реНрдпрдХрддрд╛рд╣рд░реВ
SET рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рд░ deterministic рдкреНрд░рдХрд╛рд░реНрдп рдЖрд╡рд╢реНрдпрдХрддрд╛рд╣рд░реВрдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд, рдирд┐рдореНрди рдЖрд╡рд╢реНрдпрдХрддрд╛рд╣рд░реВ рдкреВрд░рд╛ рдЧрд░реНрдиреБрдкрд░реНрдЫ:
- рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрдиреЗ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛
CREATE INDEX
рджреГрд╢реНрдпрдХреЛ рдорд╛рд▓рд┐рдХ рд╣реБрдиреБрдкрд░реНрдЫред- рдЬрдм рддрдкрд╛рдЗрдБ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ, the
IGNORE_DUP_KEY
рд╡рд┐рдХрд▓реНрдк рдмрдиреНрдж (рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕реЗрдЯрд┐рдЩ) рдорд╛ рд╕реЗрдЯ рд╣реБрдиреБрдкрд░реНрдЫред- рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВ рджреБрдИ-рднрд╛рдЧ рдирд╛рдорд╣рд░реВрджреНрд╡рд╛рд░рд╛ рд╕рдиреНрджрд░реНрдн рд╣реБрдиреБрдкрд░реНрдЫ, рдпреЛрдЬрдирд╛.рддрд╛рд▓рд┐рдХрд╛ рдирд╛рдо рджреГрд╢реНрдп рдкрд░рд┐рднрд╛рд╖рд╛ рдорд╛ред
- рджреГрд╢реНрдпрдорд╛ рд╕рдиреНрджрд░реНрдн рдЧрд░рд┐рдПрдХрд╛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛-рдкрд░рд┐рднрд╛рд╖рд┐рдд рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрдкрд░реНрдЫ
WITH SCHEMABINDING
рд╡рд┐рдХрд▓реНрдкред- рджреГрд╢реНрдпрдорд╛ рд╕рдиреНрджрд░реНрдн рдЧрд░рд┐рдПрдХрд╛ рдХреБрдиреИ рдкрдирд┐ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛-рдкрд░рд┐рднрд╛рд╖рд┐рдд рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ рджреБрдИ-рднрд╛рдЧ рдирд╛рдорд╣рд░реВрджреНрд╡рд╛рд░рд╛ рд╕рдиреНрджрд░реНрдн рд╣реБрдиреБрдкрд░реНрдЫ, ..
- рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛-рдкрд░рд┐рднрд╛рд╖рд┐рдд рдкреНрд░рдХрд╛рд░реНрдпрдХреЛ рдбреЗрдЯрд╛ рдкрд╣реБрдБрдЪ рдЧреБрдг рд╣реБрдиреБрдкрд░реНрдЫ
NO SQL
, рд░ рдмрд╛рд╣реНрдп рдкрд╣реБрдБрдЪ рд╕рдореНрдкрддреНрддрд┐ рд╣реБрдиреБрдкрд░реНрдЫNO
.- рд╕рд╛рдорд╛рдиреНрдп рднрд╛рд╖рд╛ рд░рдирдЯрд╛рдЗрдо (CLR) рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ рджреГрд╢реНрдпрдХреЛ рдЪрдпрди рд╕реВрдЪреАрдорд╛ рджреЗрдЦрд╛ рдкрд░реНрди рд╕рдХреНрдЫ, рддрд░ рдХреНрд▓рд╕реНрдЯрд░ рдЧрд░рд┐рдПрдХреЛ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХреБрдЮреНрдЬреАрдХреЛ рдкрд░рд┐рднрд╛рд╖рд╛рдХреЛ рдЕрдВрд╢ рд╣реБрди рд╕рдХреНрджреИрдиред CLR рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ рджреГрд╢реНрдпрдХреЛ WHERE рдЦрдгреНрдб рд╡рд╛ рджреГрд╢реНрдпрдорд╛ JOIN рд╕рдЮреНрдЪрд╛рд▓рдирдХреЛ ON рдЦрдгреНрдбрдорд╛ рджреЗрдЦрд╛ рдкрд░реНрди рд╕рдХреНрджреИрдиред
- CLR рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ рд░ рджреГрд╢реНрдп рдкрд░рд┐рднрд╛рд╖рд╛рдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХрд╛ CLR рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛-рдкрд░рд┐рднрд╛рд╖рд┐рдд рдкреНрд░рдХрд╛рд░рд╣рд░реВрдХреЛ рд╡рд┐рдзрд┐рд╣рд░реВрдорд╛ рдирд┐рдореНрди рддрд╛рд▓рд┐рдХрд╛рдорд╛ рджреЗрдЦрд╛рдЗрдПрдХрд╛ рдЧреБрдгрд╣рд░реВ рд╕реЗрдЯ рд╣реБрдиреБрдкрд░реНрдЫред
рд╕рдореНрдкрддреНрддрд┐
рдиреЛрдЯDETERMINISTIC = рд╕рддреНрдп
Microsoft .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рд╡рд┐рдзрд┐рдХреЛ рд╡рд┐рд╢реЗрд╖рддрд╛рдХреЛ рд░реВрдкрдорд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ рдШреЛрд╖рдгрд╛ рдЧрд░рд┐рдиреБрдкрд░реНрдЫредPRECISE = рд╕рддреНрдп
.NET рдлреНрд░реЗрдорд╡рд░реНрдХ рд╡рд┐рдзрд┐рдХреЛ рд╡рд┐рд╢реЗрд╖рддрд╛рдХреЛ рд░реВрдкрдорд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ рдШреЛрд╖рдгрд╛ рдЧрд░рд┐рдиреБрдкрд░реНрдЫредрдбрд╛рдЯрд╛ рдкрд╣реБрдБрдЪ = рдХреБрдиреИ SQL рдЫреИрди
DataAccessKind.None рдорд╛ DataAccess рд╡рд┐рд╢реЗрд╖рддрд╛ рд░ SystemDataAccessKind.None рдорд╛ SystemDataAccess рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕реЗрдЯ рдЧрд░реЗрд░ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░рд┐рдиреНрдЫредрдмрд╛рд╣реНрдп рдкрд╣реБрдБрдЪ = рдЫреИрди
рдпреЛ рдЧреБрдг CLR рджрд┐рдирдЪрд░реНрдпрд╛рдХрд╛ рд▓рд╛рдЧрд┐ NO рдорд╛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдЫред- рджреГрд╢реНрдп рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрдкрд░реНрдЫ
WITH SCHEMABINDING
рд╡рд┐рдХрд▓реНрдкред- рджреГрд╢реНрдпрд▓реЗ рдХреЗрд╡рд▓ рдЖрдзрд╛рд░ рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВ рд╕рдиреНрджрд░реНрдн рдЧрд░реНрдиреБрдкрд░реНрдЫ рдЬреБрди рджреГрд╢реНрдпрдХреЛ рд░реВрдкрдорд╛ рдПрдЙрдЯреИ рдбреЗрдЯрд╛рдмреЗрд╕рдорд╛ рдЫрдиреНред рджреГрд╢реНрдпрд▓реЗ рдЕрдиреНрдп рджреГрд╢реНрдпрд╣рд░реВрд▓рд╛рдИ рд╕рдиреНрджрд░реНрдн рдЧрд░реНрди рд╕рдХреНрджреИрдиред
- рджреГрд╢реНрдп рдкрд░рд┐рднрд╛рд╖рд╛рдорд╛ SELECT рдХрдердирд▓реЗ рдирд┐рдореНрди Transact-SQL рддрддреНрд╡рд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрдиреБ рд╣реБрдБрджреИрди:
COUNT
ROWSET рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ (OPENDATASOURCE
,OPENQUERY
,OPENROWSET
, рд░OPENXML
)
OUTER
рдЬреЛрдбрд┐рдиреНрдЫ(LEFT
,RIGHT
рд╡рд╛FULL
)рд╡реНрдпреБрддреНрдкрдиреНрди рддрд╛рд▓рд┐рдХрд╛ (рдирд┐рд░реНрджрд┐рд╖реНрдЯ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд a
SELECT
рдорд╛ рдмрдпрд╛рдиFROM
рдЦрдгреНрдб)
рд╕реНрд╡рдпрдореН рдЬреЛрдбрд┐рдиреНрдЫ
рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕реНрддрдореНрднрд╣рд░реВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрджреИSELECT *
orSELECT <table_name>.*
DISTINCT
STDEV
,STDEVP
,VAR
,VARP
рд╡рд╛AVG
рд╕рд╛рдЭрд╛ рддрд╛рд▓рд┐рдХрд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ (CTE)рдлреНрд▓реЛрдЯ1, рдкрд╛рда, ntext, рдЫрд╡рд┐, XMLрд╡рд╛ рдлрд╛рдЗрд▓рд╕реНрдЯреНрд░рд┐рдо рд╕реНрддрдореНрднрд╣рд░реВ
рд╕рдмрдХреНрд╡реЗрд░реА
OVER
рдЦрдгреНрдб, рдЬрд╕рдорд╛ рд╢реНрд░реЗрдгреАрдХрд░рдг рд╡рд╛ рд╕рдордЧреНрд░ рд╕рдЮреНрдЭреНрдпрд╛рд▓ рдХрд╛рд░реНрдпрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЫрдиреНрдкреВрд░реНрдг-рдкрд╛рда рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА (
CONTAINS
,FREETEXT
)
SUM
рдХрд╛рд░реНрдп рдЬрд╕рд▓реЗ рд╢реВрдиреНрдп рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рд▓рд╛рдИ рд╕рдиреНрджрд░реНрдн рдЧрд░реНрджрдЫ
ORDER BY
CLR рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛-рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕рдордЧреНрд░ рдкреНрд░рдХрд╛рд░реНрдп
TOP
CUBE
,ROLLUP
рд╡рд╛GROUPING SETS
рд╕рдВрдЪрд╛рд▓рдХрд╣рд░реВ
MIN
,MAX
UNION
,EXCEPT
рд╡рд╛INTERSECT
рд╕рдВрдЪрд╛рд▓рдХрд╣рд░реВ
TABLESAMPLE
рддрд╛рд▓рд┐рдХрд╛ рдЪрд░рд╣рд░реВ
OUTER APPLY
orCROSS APPLY
PIVOT
,UNPIVOT
рд╕реНрдкреНрдпрд╛рд░реНрд╕ рд╕реНрддрдореНрдн рд╕реЗрдЯрд╣рд░реВ
рдЗрдирд▓рд╛рдЗрди (TVF) рд╡рд╛ рдмрд╣реБ-рдХрдерди рддрд╛рд▓рд┐рдХрд╛-рдореВрд▓реНрдп рдХрд╛рд░реНрдпрд╣рд░реВ (MSTVF)
OFFSET
CHECKSUM_AGG
1 рдЕрдиреБрдХреНрд░рдорд┐рдд рджреГрд╢реНрдп рд╕рдорд╛рд╡реЗрд╢ рд╣реБрди рд╕рдХреНрдЫ рдлреНрд▓реЛрдЯ рд╕реНрддрдореНрднрд╣рд░реВ; рдпрджреНрдпрдкрд┐, рддреНрдпрд╕реНрддрд╛ рд╕реНрддрдореНрднрд╣рд░реВрд▓рд╛рдИ рдХреНрд▓рд╕реНрдЯрд░ рдЧрд░рд┐рдПрдХреЛ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХреБрдЮреНрдЬреАрдорд╛ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрди рд╕рдХрд┐рдБрджреИрдиред
- If
GROUP BY
рдЕрд╡рд╕реНрдерд┐рдд рдЫ, рджреГрд╢реНрдп рдкрд░рд┐рднрд╛рд╖рд╛ рд╕рдорд╛рд╡реЗрд╢ рд╣реБрдиреБрдкрд░реНрдЫCOUNT_BIG(*)
рд░ рд╕рдорд╛рд╡реЗрд╢ рд╣реБрдиреБ рд╣реБрдБрджреИрдиHAVING
ред рдпреАGROUP BY
рдкреНрд░рддрд┐рдмрдиреНрдзрд╣рд░реВ рдЕрдиреБрдХреНрд░рдорд┐рдд рджреГрд╢реНрдп рдкрд░рд┐рднрд╛рд╖рд╛рдорд╛ рдорд╛рддреНрд░ рд▓рд╛рдЧреВ рд╣реБрдиреНрдЫрдиреНред рдПрдХ рдХреНрд╡реЗрд░реАрд▓реЗ рдпрд╕рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдпреЛрдЬрдирд╛рдорд╛ тАЛтАЛрдЕрдиреБрдХреНрд░рдорд┐рдд рджреГрд╢реНрдп рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдЫ рдпрджрд┐ рдпрд╕рд▓реЗ рдпреА рдХреБрд░рд╛рд╣рд░реВ рдкреВрд░рд╛ рдЧрд░реНрджреИрди рднрдиреЗ рдкрдирд┐GROUP BY
рдкреНрд░рддрд┐рдмрдиреНрдзрд╣рд░реВред- рдпрджрд┐ рджреГрд╢реНрдп рдкрд░рд┐рднрд╛рд╖рд╛рд▓реЗ a рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫ
GROUP BY
рдЦрдгреНрдб, рдЕрджреНрд╡рд┐рддреАрдп рдХреНрд▓рд╕реНрдЯрд░ рдЧрд░рд┐рдПрдХреЛ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рдХреЛ рдХреБрдЮреНрдЬреАрд▓реЗ рдорд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реНрддрдореНрднрд╣рд░реВрд▓рд╛рдИ рдорд╛рддреНрд░ рд╕рдиреНрджрд░реНрдн рдЧрд░реНрди рд╕рдХреНрдЫGROUP BY
рдЦрдгреНрдб
рдпреЛ рдпрд╣рд╛рдБ рд╕реНрдкрд╖реНрдЯ рдЫ рдХрд┐ рднрд╛рд░рддреАрдпрд╣рд░реВ рд╕рдВрд▓рдЧреНрди рдерд┐рдПрдирдиреН, рдХрд┐рдирднрдиреЗ рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдпреЛ рдпреЛрдЬрдирд╛ рдЕрдиреБрд╕рд╛рд░ рдЧрд░реНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реЗ "рд╣рд╛рдореА рдереЛрд░реИ, рддрд░ рд░рд╛рдореНрд░реЛ рдЧрд░реНрдиреЗрдЫреМрдВред" рддреНрдпреЛ рд╣реЛ, рддрд┐рдиреАрд╣рд░реВрд╕рдБрдЧ рдореИрджрд╛рдирдорд╛ рдзреЗрд░реИ рдЦрд╛рдирд╣рд░реВ рдЫрдиреН, рддрд░ рддрд┐рдиреАрд╣рд░реВрдХреЛ рд╕реНрдерд╛рди рдЕрдзрд┐рдХ рдкрд╛рд░рджрд░реНрд╢реА рдЫред рд╕рдмреИрднрдиреНрджрд╛ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рдХреБрд░рд╛ рдпреЛ рд╕реАрдорд╛ рд╣реЛ:
рджреГрд╢реНрдпрд▓реЗ рдХреЗрд╡рд▓ рдЖрдзрд╛рд░ рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВ рд╕рдиреНрджрд░реНрдн рдЧрд░реНрдиреБрдкрд░реНрдЫ рдЬреБрди рджреГрд╢реНрдпрдХреЛ рд░реВрдкрдорд╛ рдПрдЙрдЯреИ рдбреЗрдЯрд╛рдмреЗрд╕рдорд╛ рдЫрдиреНред рджреГрд╢реНрдпрд▓реЗ рдЕрдиреНрдп рджреГрд╢реНрдпрд╣рд░реВрд▓рд╛рдИ рд╕рдиреНрджрд░реНрдн рдЧрд░реНрди рд╕рдХреНрджреИрдиред
рд╣рд╛рдореНрд░реЛ рд╢рдмреНрджрд╛рд╡рд▓реАрдорд╛, рдпрд╕рдХреЛ рдорддрд▓рдм рдПрдЙрдЯрд╛ рдкреНрд░рдХрд╛рд░реНрдпрд▓реЗ рдЕрд░реНрдХреЛ рднреМрддрд┐рдХ рдХрд╛рд░реНрдпрдорд╛ рдкрд╣реБрдБрдЪ рдЧрд░реНрди рд╕рдХреНрджреИрдиред рдпрд╕рд▓реЗ рдХреЛрд▓реАрдорд╛ рд░рд╣реЗрдХрд╛ рд╕рдмреИ рд╡рд┐рдЪрд╛рд░рдзрд╛рд░рд╛рд▓рд╛рдИ рдХрд╛рдЯреНрдЫред
рд╕рд╛рдереИ, рдпреЛ рд╕реАрдорд╛ (рд░ рдкрд╛рдардорд╛ рдердк) рд▓реЗ рдкреНрд░рдпреЛрдЧрдХрд╛ рдХреЗрд╕рд╣рд░реВрд▓рд╛рдИ рдзреЗрд░реИ рдХрдо рдЧрд░реНрдЫ:
рджреГрд╢реНрдп рдкрд░рд┐рднрд╛рд╖рд╛рдорд╛ SELECT рдХрдердирд▓реЗ рдирд┐рдореНрди Transact-SQL рддрддреНрд╡рд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрдиреБ рд╣реБрдБрджреИрди:
COUNT
ROWSET рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ (OPENDATASOURCE
,OPENQUERY
,OPENROWSET
, рд░OPENXML
)
OUTER
рдЬреЛрдбрд┐рдиреНрдЫ(LEFT
,RIGHT
рд╡рд╛FULL
)рд╡реНрдпреБрддреНрдкрдиреНрди рддрд╛рд▓рд┐рдХрд╛ (рдирд┐рд░реНрджрд┐рд╖реНрдЯ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд a
SELECT
рдорд╛ рдмрдпрд╛рдиFROM
рдЦрдгреНрдб)
рд╕реНрд╡рдпрдореН рдЬреЛрдбрд┐рдиреНрдЫ
рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕реНрддрдореНрднрд╣рд░реВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрджреИSELECT *
orSELECT <table_name>.*
DISTINCT
STDEV
,STDEVP
,VAR
,VARP
рд╡рд╛AVG
рд╕рд╛рдЭрд╛ рддрд╛рд▓рд┐рдХрд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ (CTE)рдлреНрд▓реЛрдЯ1, рдкрд╛рда, ntext, рдЫрд╡рд┐, XMLрд╡рд╛ рдлрд╛рдЗрд▓рд╕реНрдЯреНрд░рд┐рдо рд╕реНрддрдореНрднрд╣рд░реВ
рд╕рдмрдХреНрд╡реЗрд░реА
OVER
рдЦрдгреНрдб, рдЬрд╕рдорд╛ рд╢реНрд░реЗрдгреАрдХрд░рдг рд╡рд╛ рд╕рдордЧреНрд░ рд╕рдЮреНрдЭреНрдпрд╛рд▓ рдХрд╛рд░реНрдпрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЫрдиреНрдкреВрд░реНрдг-рдкрд╛рда рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА (
CONTAINS
,FREETEXT
)
SUM
рдХрд╛рд░реНрдп рдЬрд╕рд▓реЗ рд╢реВрдиреНрдп рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рд▓рд╛рдИ рд╕рдиреНрджрд░реНрдн рдЧрд░реНрджрдЫ
ORDER BY
CLR рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛-рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕рдордЧреНрд░ рдкреНрд░рдХрд╛рд░реНрдп
TOP
CUBE
,ROLLUP
рд╡рд╛GROUPING SETS
рд╕рдВрдЪрд╛рд▓рдХрд╣рд░реВ
MIN
,MAX
UNION
,EXCEPT
рд╡рд╛INTERSECT
рд╕рдВрдЪрд╛рд▓рдХрд╣рд░реВ
TABLESAMPLE
рддрд╛рд▓рд┐рдХрд╛ рдЪрд░рд╣рд░реВ
OUTER APPLY
orCROSS APPLY
PIVOT
,UNPIVOT
рд╕реНрдкреНрдпрд╛рд░реНрд╕ рд╕реНрддрдореНрдн рд╕реЗрдЯрд╣рд░реВ
рдЗрдирд▓рд╛рдЗрди (TVF) рд╡рд╛ рдмрд╣реБ-рдХрдерди рддрд╛рд▓рд┐рдХрд╛-рдореВрд▓реНрдп рдХрд╛рд░реНрдпрд╣рд░реВ (MSTVF)
OFFSET
CHECKSUM_AGG
OUTER JOINS, UNION, ORDER BY рд░ рдЕрд░реВрд▓рд╛рдИ рдирд┐рд╖реЗрдз рдЧрд░рд┐рдПрдХреЛ рдЫред рдХреЗ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдирд╕рдХрд┐рдиреЗ рднрдиреНрджрд╛ рдХреЗ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ рднрдиреЗрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди рд╕рдЬрд┐рд▓реЛ рд╣реБрди рд╕рдХреНрдЫред рд╕реВрдЪреА рд╕рд╛рдпрдж рдзреЗрд░реИ рдЫреЛрдЯреЛ рд╣реБрдиреЗрдЫред
рд╕рдВрдХреНрд╖реЗрдкрдорд╛: LGPL рдЯреЗрдХреНрдиреЛрд▓реЛрдЬреАрдорд╛ DBMS рдмрдирд╛рдо рдХреБрдиреИ рдкрдирд┐ (рдПрдХ рддрд╛рд░реНрдХрд┐рдХ, рдкреНрд░рд╛рд╡рд┐рдзрд┐рдХ рдЕрдкрд╡рд╛рдж рдмрд╛рд╣реЗрдХ) рдкреНрд░рддреНрдпреЗрдХрдорд╛ рдкреНрд░рддрд┐рдмрдиреНрдзрд╣рд░реВрдХреЛ рдареВрд▓реЛ рд╕реЗрдЯ (рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдиреЛрдЯ рдЧрд░реМрдВ)ред рдпрджреНрдпрдкрд┐, рдпреЛ рдзреНрдпрд╛рди рджрд┐рдиреБ рдкрд░реНрдЫ рдХрд┐ рдпрд╕ рд╕рдВрдпрдиреНрддреНрд░рд▓рд╛рдИ рд░рд┐рд▓реЗрд╢рдирд▓ рддрд░реНрдХрдорд╛ рд▓рд╛рдЧреВ рдЧрд░реНрди рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рддрд░реНрдХрдорд╛ рднрдиреНрджрд╛ рдХреЗрд╣рд┐ рдмрдвреА рдЧрд╛рд╣реНрд░реЛ рдЫред
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рдпрд╕рд▓реЗ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ? PostgreSQL рд▓рд╛рдИ "рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рди" рдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред рддреНрдпрд╣рд╛рдБ рднрд┐рддреНрд░ рдПрдЙрдЯрд╛ рдЬрдЯрд┐рд▓ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЫ рдЬрд╕рд▓реЗ рдкреНрд░рд╢реНрдирд╣рд░реВ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрджрдЫред рдпрд╣рд╛рдБ
рдХреЗ рдпрд╕рд▓реЗ рдкреНрд░рднрд╛рд╡рдХрд╛рд░реА рд░реВрдкрдорд╛ рдХрд╛рдо рдЧрд░реНрдЫ? рдПрдХрджрдо рдкреНрд░рднрд╛рд╡рдХрд╛рд░реАред рджреБрд░реНрднрд╛рдЧреНрдпрд╡рд╢, рдпреЛ рдкреНрд░рдорд╛рдгрд┐рдд рдЧрд░реНрди рдЧрд╛рд╣реНрд░реЛ рдЫред рдо рдорд╛рддреНрд░ рднрдиреНрди рд╕рдХреНрдЫреБ рдХрд┐ рдпрджрд┐ рддрдкрд╛рдЗрдБ рдареВрд▓рд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдорд╛ рдЕрд╡рд╕реНрдерд┐рдд рд╣рдЬрд╛рд░реМрдВ рдкреНрд░рд╢реНрдирд╣рд░реВ рд╡рд┐рдЪрд╛рд░ рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рдФрд╕рддрдорд╛ рддрд┐рдиреАрд╣рд░реВ рд░рд╛рдореНрд░реЛ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рдХреЛ рднрдиреНрджрд╛ рдмрдвреА рдХреБрд╢рд▓ рдЫрдиреНред рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ SQL рдкреНрд░реЛрдЧреНрд░рд╛рдорд░рд▓реЗ рдХреБрдиреИ рдкрдирд┐ рдкреНрд░рд╢реНрдирд▓рд╛рдИ рдЕрдЭ рдХреБрд╢рд▓рддрд╛рдкреВрд░реНрд╡рдХ рд▓реЗрдЦреНрди рд╕рдХреНрдЫ, рддрд░ рд╣рдЬрд╛рд░ рдкреНрд░рд╢реНрдирд╣рд░реВрдХреЛ рд╕рд╛рдердорд╛ рдЙрд╕рд╕рдБрдЧ рдпреЛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░реЗрд░рдгрд╛ рд╡рд╛ рд╕рдордп рд╣реБрдБрджреИрдиред рдкреНрд░рднрд╛рд╡рдХрд╛рд░рд┐рддрд╛рдХреЛ рдкреНрд░рдорд╛рдгрдХреЛ рд░реВрдкрдорд╛ рдореИрд▓реЗ рдЕрдм рдЙрджреНрдзреГрдд рдЧрд░реНрди рд╕рдХреНрдиреЗ рдПрдХ рдорд╛рддреНрд░ рдХреБрд░рд╛ рдпреЛ рд╣реЛ рдХрд┐ рдзреЗрд░реИ рдкрд░рд┐рдпреЛрдЬрдирд╛рд╣рд░реВ рдпрд╕ DBMS рдорд╛ рдирд┐рд░реНрдорд┐рдд рдкреНрд▓реЗрдЯрдлрд░реНрдордорд╛ рдХрд╛рдо рдЧрд░рд┐рд░рд╣реЗрдХрд╛ рдЫрдиреНред
рдирд┐рдореНрди рд▓реЗрдЦрд╣рд░реВрдорд╛, рдо рддрдкрд╛рдЗрдБ рдХрд╕рд░реА рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВрдорд╛ рдкреНрд░рддрд┐рдмрдиреНрдзрд╣рд░реВ рд╕реЗрдЯ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдкрд░рд┐рд╡рд░реНрддрди рд╕рддреНрд░рд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рд░ рдзреЗрд░реИ рдХреБрд░рд╛рд╣рд░реВ рдмрд╛рд░реЗ рдкрдирд┐ рдХреБрд░рд╛ рдЧрд░реНрдиреЗрдЫреБред
рд╕реНрд░реЛрдд: www.habr.com