рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд░рд┐рдХреЙрд░реНрдб рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬреЛ рдбреЗрдЯрд╛ рдЕрдЦрдВрдбрддрд╛ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИред рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣рдЯрд╛рдирд╛ рдбреЗрдЯрд╛ рдХреА рд╢реБрджреНрдзрддрд╛ рдмрдирд╛рдП рд░рдЦрдиреЗ, рд╕реНрдЯреЛрд░реЗрдЬ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ, рдФрд░ рдХреНрд╡реЗрд░реА рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо SQL рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╣рдЯрд╛рдиреЗ рдХреА рд╡рд┐рднрд┐рдиреНрди рддрдХрдиреАрдХреЛрдВ рдХреЛ, рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓реЛрдВ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░рдмрдВрдзрди рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк, рд╕рдордЭреЗрдВрдЧреЗред
рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ DataCamp рдХреЗ Introduction to SQL рдФрд░ Learn SQL рдХреЛрд░реНрд╕ рд▓реЗрдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛/рджреЗрддреА рд╣реВрдБ рддрд╛рдХрд┐ рдЖрдк SQL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рдирд┐рдХрд╛рд▓рдиреЗ рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреА рдмреБрдирд┐рдпрд╛рджреА рдЬрд╛рдирдХрд╛рд░реА рд╕реАрдЦ рд╕рдХреЗрдВред рд╕рд╛рде рд╣реА, рдореБрдЭреЗ SQL Basics Cheat Sheet рднреА рдЙрдкрдпреЛрдЧреА рд╕рдВрджрд░реНрдн рд▓рдЧрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЖрдк рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВтАФрдЗрд╕рдореЗрдВ рд╕рдмрд╕реЗ рдЖрдо SQL рдлрд╝рдВрдХреНрд╢рдиреЛрдВ рдХрд╛ рд╕рд╛рд░ рд╣реИред
TL;DR
SELECT DISTINCT рдпрд╛ GROUP BY рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯреЗрдмрд▓ рдХреЛ рдмрджрд▓реЗ рдмрд┐рдирд╛ рдпреВрдирд┐рдХ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
рдмреЗрд╣рддрд░ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд▓рд┐рдП ROW_NUMBER() рдХреЛ CTE рдФрд░ DELETE рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдЪреБрдирд┐рдВрджрд╛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рд╣рдЯрд╛рдП рдЬрд╛ рд╕рдХреЗрдВ
рдХрд┐рд╕реА рднреА DBMS рдореЗрдВ рд╕рд░рд▓ рдбрд┐рдбреБрдкреНрд▓реАрдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рд╕рдмрдХреНрд╡реЗрд░реА (NOT IN / MIN()) рдХреЗ рд╕рд╛рде DELETE рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
рдмрдбрд╝реЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП, рдЕрд╕реНрдерд╛рдпреА рдЯреЗрдмрд▓ рд╕реЗ рдмреИрдЪ-рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХрд░рдХреЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣рдЯрд╛рдПрдБ
рдкреНрд░рд╛рдЗрдорд░реА рдХреА, рдпреВрдирд┐рдХ рдХрдВрд╕реНрдЯреНрд░реЗрдВрдЯ, рдФрд░ рдЙрдЪрд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕ рдиреЙрд░реНрдорд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд╕реЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд░реЛрдХреЗрдВ
SQL рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд╕рдордЭрдирд╛
SQL рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╡реЗ рд░рд┐рдХреЙрд░реНрдб рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рд╕рднреА рдпрд╛ рдЪреБрдиреЗ рд╣реБрдП рдХреЙрд▓рдореЛрдВ рдореЗрдВ рд╕рдорд╛рди рдорд╛рди рд╣реЛрддреЗ рд╣реИрдВред SQL рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░рдг рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ:
рдкреНрд░рд╛рдЗрдорд░реА рдХреА рдХрд╛ рдЕрднрд╛рд╡: рдЬрдм рдЯреЗрдмрд▓ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдкреНрд░рд╛рдЗрдорд░реА рдХреА рдпрд╛ рдпреВрдирд┐рдХ рдХрдВрд╕реНрдЯреНрд░реЗрдВрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛, рддреЛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдбреЗрдЯрд╛ рдбрд╛рд▓рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХрд╛ рдХреЛрдИ рддрдВрддреНрд░ рдирд╣реАрдВ рд╣реЛрддрд╛ред рдпрд╣ рддрдм рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдЯреЗрдмрд▓ рдиреЙрд░реНрдорд▓рд╛рдЗрдЬрд╝ рдирд╣реАрдВ рд╣реИ рдФрд░/рдпрд╛ рдЯреНрд░рд╛рдВрдЬрд╝рд┐рдЯрд┐рд╡ рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рдХреА рд╕рдорд╕реНрдпрд╛рдПрдБ рд╣реИрдВред
рдбреЗрдЯрд╛ рдЗрдВрдЯреАрдЧреНрд░реЗрд╢рди рд╕рдорд╕реНрдпрд╛рдПрдБ: рд╡рд┐рднрд┐рдиреНрди рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдорд░реНрдЬ рдХрд░рддреЗ рд╕рдордп, рдЧрд▓рдд рдЬреЙрдЗрди рдпрд╛ рдбреЗрдЯрд╛ рдлрд╝реЙрд░реНрдореЗрдЯ рдХреА рдЕрд╕рдВрдЧрддрд┐рдпрд╛рдБ рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд▓рд╛ рд╕рдХрддреА рд╣реИрдВред
рдореИрдиреБрдЕрд▓ рдбреЗрдЯрд╛ рдПрдВрдЯреНрд░реА рддреНрд░реБрдЯрд┐рдпрд╛рдБ: рдорд╛рдирд╡реАрдп рднреВрд▓, рдЬреИрд╕реЗ рдПрдХ рд╣реА рд░рд┐рдХреЙрд░реНрдб рдХрдИ рдмрд╛рд░ рджрд░реНрдЬ рдХрд░рдирд╛, рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░рдг рд╣реИред
рдЖрдЧреЗ рдХреЗ рднрд╛рдЧ рдореЗрдВ, рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ SQL рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреИрд╕реЗ рд╣рдЯрд╛рдПрдБред рд▓реЗрдЦ рдХреЛ рджреЛ рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рдмрд╛рдБрдЯрд╛ рдЧрдпрд╛ рд╣реИ: рдкрд╣рд▓реЗ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдмрддрд╛рдПрдБрдЧреЗ рдХрд┐ рд░рд┐рдкреЛрд░реНрдЯ рдпрд╛ рдбреИрд╢рдмреЛрд░реНрдб рдХреЗ рд▓рд┐рдП рдЖрдк рдЬреЛ рдбреЗрдЯрд╛ рдирд┐рдХрд╛рд▓ рд░рд╣реЗ рд╣реИрдВ, рдЙрд╕рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреИрд╕реЗ рд╣рдЯрд╛рдПрдБ; рджреВрд╕рд░реЗ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреИрд╕реЗ рд╣рдЯрд╛рдПрдБред
рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХреИрд╕реЗ рдХрд░реЗрдВ
рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдкрд╣рдЪрд╛рдиреЗрдВ рдХрд┐ рдХреМрди-рд╕реА рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣реИрдВред GROUP BY рдХреЗ рд╕рд╛рде HAVING COUNT(*) > 1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╡реЗ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдвреВрдБрдвреЗрдВ рдЬреЛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдЖрддреА рд╣реИрдВ:
SELECT Name, COUNT ( * ) AS duplicate_count
FROM customers
GROUP BY Name
HAVING COUNT ( * ) > 1 ; рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
рдпрд╣ рдХреНрд╡реЗрд░реА рд╣рд░ рдЙрд╕ Name рдХреЛ рд▓реМрдЯрд╛рддреА рд╣реИ рдЬреЛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдЖрддрд╛ рд╣реИ, рд╕рд╛рде рдореЗрдВ рдЙрд╕рдХреА рдЖрд╡реГрддреНрддрд┐ рднреАред рдЖрдк рдЗрд╕реЗ рдХрдИ рдХреЙрд▓рдо рддрдХ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВтАФрдЙрдиреНрд╣реЗрдВ SELECT рдФрд░ GROUP BY рджреЛрдиреЛрдВ рдореЗрдВ рдЬреЛрдбрд╝рдХрд░ред
рд╣рд░ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╕рдореВрд╣ рдХреЗ рднреАрддрд░ рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдХреА рд░реИрдВрдХ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП ROW_NUMBER() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
SELECT ID, Name,
ROW_NUMBER( ) OVER ( PARTITION BY Name ORDER BY ID) AS row_num
FROM customers; рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
рдЬрд╣рд╛рдБ row_num > 1 рд╣реИ, рд╡реЗ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣реИрдВред рдкрд╣рдЪрд╛рди рд╣реЛрдиреЗ рдкрд░, рдиреАрдЪреЗ рджрд┐рдП рдЕрдиреБрднрд╛рдЧреЛрдВ рд╕реЗ рдЙрдкрдпреБрдХреНрдд рд╣рдЯрд╛рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдЪреБрдиреЗрдВред
рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдирд┐рдХрд╛рд▓реЗ рдЧрдП рдбреЗрдЯрд╛ рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣рдЯрд╛рдиреЗ рдХреЗ рддрд░реАрдХреЗ
SQL рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рдирд┐рдХрд╛рд▓рддреЗ рд╕рдордп рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣рдЯрд╛рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВред рд╣рд░ рддрд░реАрдХрд╛ DBMS рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ SQL Server, MySQL, рдФрд░ PostgreSQLред рдЗрд╕ рднрд╛рдЧ рдореЗрдВ рд╣рдо рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣рдЯрд╛рдиреЗ рдХреА рд╡рд┐рдзрд┐рдпрд╛рдБ рджреЗрдЦреЗрдВрдЧреЗ рдФрд░ рд╣рд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдмрд╛рддреЛрдВ рдкрд░ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓реЗрдВрдЧреЗред┬а рдзреНрдпрд╛рди рд░рдЦреЗрдВ, рдпреЗ рддрд░реАрдХреЗ рдбреЗрдЯрд╛ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░ рдпреВрдирд┐рдХ рд░рд┐рдХреЙрд░реНрдб рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЖрдзрд╛рд░рднреВрдд рдЯреЗрдмрд▓ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдирд╣реАрдВ рдХрд░рддреЗред
DISTINCT рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ
DISTINCT рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ SELECT рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдореЗрдВ рдпреВрдирд┐рдХ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП DISTINCT рдХреАрд╡рд░реНрдб рдХрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ MySQL, PostgreSQL, рдФрд░ SQL Server рдореЗрдВ рд╕рдорд╛рди рд╣реИред рдиреАрдЪреЗ рджреА рдЧрдИ рдХреНрд╡реЗрд░реА customers рдЯреЗрдмрд▓ рд╕реЗ рдпреВрдирд┐рдХ рдЧреНрд░рд╛рд╣рдХ рдирд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧреАред
SELECT DISTINCT Name
FROM customers; рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
рдПрдЧреНрд░реАрдЧреЗрдЯ рдлрд╝рдВрдХреНрд╢рдиреЛрдВ рдХреЗ рд╕рд╛рде GROUP BY рдХрд╛ рдЙрдкрдпреЛрдЧ
GROUP BY рдХреНрд▓реЙрдЬрд╝, MAX(), MIN(), рдпрд╛ COUNT() рдЬреИрд╕реЗ рдПрдЧреНрд░реАрдЧреЗрдЯ рдлрд╝рдВрдХреНрд╢рдиреЛрдВ рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░, рдЯреЗрдмрд▓реЛрдВ рд╕реЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд░рд┐рдХреЙрд░реНрдб рд╣рдЯрд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред GROUP BY рдХреНрд▓реЙрдЬрд╝ рдпрд╣ рдЪреБрдирдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рди рд░рд┐рдХреЙрд░реНрдбреЛрдВ рдХреЛ рд░рдЦрдирд╛ рд╣реИ рдФрд░ рдЕрдиреНрдп рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЛ рд╣рдЯрд╛рдирд╛ рд╣реИред
рдорд╛рди рд▓реАрдЬрд┐рдП рдЖрдк рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдЧреНрд░рд╛рд╣рдХ рд░рд┐рдХреЙрд░реНрдб рд╣рдЯрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдкрд░ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ ID рд╡рд╛рд▓рд╛ рд░рд┐рдХреЙрд░реНрдб рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдк GROUP BY рдХреНрд▓реЙрдЬрд╝ рдХреЛ MAX() рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдиреАрдЪреЗ рджрд┐рдЦрд╛рдП рдЕрдиреБрд╕рд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
DELETE c1
FROM customers c1
JOIN (
SELECT Name, MAX ( ID) AS MaxID
FROM customers
GROUP BY Name
) c2
ON c1. Name = c2. Name
AND c1. ID < c2. MaxID; рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
MySQL рдФрд░ SQL Server GROUP BY рдХреЗ рд╕рд╛рде рдПрдЧреНрд░реАрдЧреЗрдЯ рдлрд╝рдВрдХреНрд╢рдиреЛрдВ рдФрд░ JOIN рдХреНрд▓реЙрдЬрд╝ рд╡рд╛рд▓реЗ рдКрдкрд░ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рд╕рдкреЛрд░реНрдЯ рдХрд░рддреЗ рд╣реИрдВред┬а
ROW_NUMBER() рдФрд░ Common Table Expressions (CTE) рдХрд╛ рдЙрдкрдпреЛрдЧ
ROW_NUMBER() рдлрд╝рдВрдХреНрд╢рди рдХреЛ Common Table Expression (CTE) рдХреЗ рд╕рд╛рде рдорд┐рд▓рд╛рдХрд░, рдЖрдк рдЕрдкрдиреЗ рдорд╛рдирджрдВрдбреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред PARTITION BY рдФрд░ ORDER BY рдХреНрд▓реЙрдЬрд╝ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ ROW_NUMBER рд╣рд░ рдкрдВрдХреНрддрд┐ рдХреЛ рдХреНрд░рдорд╛рдВрдХ рджреЗрддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рдЖрдк рдЖрд╡рд╢реНрдпрдХ рдорд╛рдирджрдВрдб рди рдкреВрд░реА рдХрд░рдиреЗ рд╡рд╛рд▓реА рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдиреАрдЪреЗ рдХреА рдХреНрд╡реЗрд░реА рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдкрд╣рдЪрд╛рдирддреА рд╣реИ рдФрд░ рдкрд╣рд▓реА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдмрд╛рдХреА рд╕рднреА рдХреЛ рд╣рдЯрд╛ рджреЗрддреА рд╣реИред
WITH CTE AS (
SELECT ID, Name, ROW_NUMBER( ) OVER ( PARTITION BY Name ORDER BY ID ASC ) AS RowNum
FROM customers
)
SELECT ID, Name
FROM CTE
WHERE RowNum = 1 ; рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
рдпрд╣ рддрд░реАрдХрд╛ SQL Server, MySQL, рдФрд░ PostgreSQL рдХреЗ рдЖрдзреБрдирд┐рдХ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдмрдбрд╝реЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдпрд╛ рдЬрдЯрд┐рд▓ рд╢рд░реНрддреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдЖрдк рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рддрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди-рд╕рд╛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд░рдЦрдирд╛ рд╣реИред
Self-JOIN рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣рдЯрд╛рдирд╛
рд╕реЗрд▓реНрдл-рдЬреЙрдЗрди рд╕реЗ рдЖрдк рдХрд┐рд╕реА рдЯреЗрдмрд▓ рдХреА рддреБрд▓рдирд╛ рдЙрд╕реА рдЯреЗрдмрд▓ рд╕реЗ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рд╡рд┐рд╢реЗрд╖ рдорд╛рдирджрдВрдбреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд░рд┐рдХреЙрд░реНрдб рдХреА рддреБрд▓рдирд╛ рдХрд░рдХреЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдФрд░ рд╣рдЯрд╛рдиреЗ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИред рдиреАрдЪреЗ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдЙрдЪреНрдЪрддрд░ ID рд╡рд╛рд▓реА рдкрдВрдХреНрддрд┐ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрд▓реНрдл-рдЬреЙрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рддрд╛рдХрд┐ рд╣рд░ рдирд╛рдо рдХреА рдХреЗрд╡рд▓ рдкрд╣рд▓реА рдЙрдкрд╕реНрдерд┐рддрд┐ рдмрдЪреЗред
DELETE c1
FROM customers c1
JOIN customers c2
ON c1. Name = c2. Name AND c1. ID > c2. ID; рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
рдКрдкрд░ рдХрд╛ рддрд░реАрдХрд╛ SQL Server, MySQL, рдФрд░ PostgreSQL рд╕рд╣рд┐рдд рдкреНрд░рдореБрдЦ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдПрдЧреНрд░реАрдЧреЗрдЯ рдлрд╝рдВрдХреНрд╢рдиреЛрдВ рдФрд░ рдЬреЙрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдбреЗрдЯрд╛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдирд╛ рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░рд╛ Intermediate SQL рдХреЛрд░реНрд╕ рджреЗрдЦреЗрдВред
рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣рдЯрд╛рдиреЗ рдХреЗ рддрд░реАрдХреЗ
рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЖрдк рдХреНрд╡реЗрд░рд┐рдпреЛрдВ рд╕реЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд░рд┐рдХреЙрд░реНрдб рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдк рдЙрдиреНрд╣реЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдбрд┐рд▓реАрдЯ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдбреЗрдЯрд╛ рдЧреБрдгрд╡рддреНрддрд╛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рддрд░реАрдХрд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдирд┐рдореНрди рд╡рд┐рдзрд┐рдпрд╛рдБ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИрдВред
ROW_NUMBER() рдФрд░ DELETE рдХрд╛ рдЙрдкрдпреЛрдЧ
ROW_NUMBER() рдкрд░рд┐рднрд╛рд╖рд┐рдд рдкрд╛рд░реНрдЯрд┐рд╢рди рдХреЗ рднреАрддрд░ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдХреНрд░рдорд╛рдВрдХрд┐рдд рдХрд░рддрд╛ рд╣реИред DELETE рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░, рдпрд╣ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЙрд▓рдореЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд░реИрдВрдХ рдХрд░ рдЕрд╡рд╛рдВрдЫрд┐рдд рд░рд┐рдХреЙрд░реНрдб рд╣рдЯрд╛рддреЗ рд╣реБрдП рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдкрд╣рдЪрд╛рдирдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рдпрд╣ рддрд░реАрдХрд╛ MySQL (8.0 рд╕реЗ), PostgreSQL, рдФрд░ SQL Server рдХреЗ рдЖрдзреБрдирд┐рдХ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред
рдорд╛рди рд▓реАрдЬрд┐рдП рдЖрдк Name рдХреЙрд▓рдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдЧреНрд░рд╛рд╣рдХ рд░рд┐рдХреЙрд░реНрдб рд╣рдЯрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ рдкрд╣рд▓реА рдЙрдкрд╕реНрдерд┐рддрд┐ (рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛ ID) рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:
WITH CTE AS (
SELECT ID, Name, ROW_NUMBER( ) OVER ( PARTITION BY Name ORDER BY ID ASC ) AS RowNum
FROM customers
)
DELETE FROM customers
WHERE ID IN ( SELECT ID FROM CTE WHERE RowNum > 1 ) ; рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
рд╕рдмрдХреНрд╡реЗрд░реА рдХреЗ рд╕рд╛рде DELETE рдХрд╛ рдЙрдкрдпреЛрдЧ
рдХрднреА-рдХрднреА, рд╕рдмрдХреНрд╡реЗрд░реА рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рд▓ DELETE рдСрдкрд░реЗрд╢рди рд╕реЗ рднреА рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣рдЯрд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рддрд░реАрдХрд╛ MySQL рдпрд╛ PostgreSQL рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ, рдЬрд╣рд╛рдБ ROW_NUMBER() рдЙрдкрд▓рдмреНрдз рди рд╣реЛред
рдиреАрдЪреЗ рдХреА рдХреНрд╡реЗрд░реА customers рдЯреЗрдмрд▓ рд╕реЗ рд╡реЗ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдбрд┐рд▓реАрдЯ рдХрд░рддреА рд╣реИ рдЬрд┐рдирдХрд╛ ID рд╣рд░ Name рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╣рд░ рдпреВрдирд┐рдХ Name рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛ ID рд╡рд╛рд▓рд╛ рд░рд┐рдХреЙрд░реНрдб рд░рдЦрддреА рд╣реИред
DELETE FROM customers
WHERE ID NOT IN (
SELECT MIN ( ID)
FROM customers
GROUP BY Name
) ; рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
HAVING рдХреНрд▓реЙрдЬрд╝ рдХреЗ рд╕рд╛рде GROUP BY рдХрд╛ рдЙрдкрдпреЛрдЧ
рдЬрдм рдЖрдкрдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЙрд▓рдореЛрдВ рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдорд╛рди рдЬрд╛рдБрдЪрдиреЗ рд╣реЛрдВ, рддреЛ GROUP BY рдХреЛ HAVING рдХреНрд▓реЙрдЬрд╝ рдХреЗ рд╕рд╛рде рдорд┐рд▓рд╛рдХрд░ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдкрд╣рдЪрд╛рдиреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд╕реЗ рдЖрдк рджрд┐рдП рдЧрдП рдорд╛рдирджрдВрдбреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡рд┐рд╢реЗрд╖ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдбрд┐рд▓реАрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рддрд░реАрдХрд╛ SQL Server, MySQL, рдФрд░ PostgreSQL рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реИред
рдиреАрдЪреЗ рдХреА рдХреНрд╡реЗрд░рд┐рдпрд╛рдБ рдкрд╣рд▓реЗ рдкрд╣рдЪрд╛рдирддреА рд╣реИрдВ рдХрд┐ рдХреМрди-рд╕реЗ рдирд╛рдо рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдЖрддреЗ рд╣реИрдВ, рдлрд┐рд░ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдбрд┐рд▓реАрдЯ рдХрд░рддреА рд╣реИрдВ рдФрд░ рд╣рд░ Name рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛ ID рд╡рд╛рд▓рд╛ рд░рд┐рдХреЙрд░реНрдб рд░рдЦрддреА рд╣реИрдВред
SELECT Name, COUNT ( * ) AS duplicate_count
FROM customers
GROUP BY Name
HAVING COUNT ( * ) > 1 ;
DELETE FROM customers
WHERE ID NOT IN (
SELECT MIN ( ID)
FROM customers
GROUP BY Name
) ; рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
рдмреИрдЪ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрд╕реНрдерд╛рдпреА рдЯреЗрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ
рдЕрд╕реНрдерд╛рдпреА рдЯреЗрдмрд▓ рдмрдбрд╝реЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдореЗрдВ рдмреИрдЪ-рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдФрд░ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рднрд╛рд╡реА рд╣реИрдВред рдпрд╣ рддрд░реАрдХрд╛ рддрдм рдЙрдкрдпреЛрдЧреА рд╣реИ рдЬрдм рдПрдХрд▓ рдХреНрд╡реЗрд░рд┐рдпрд╛рдБ рдкреНрд░рджрд░реНрд╢рди рд╕рдорд╕реНрдпрд╛рдПрдБ рдкреИрджрд╛ рдХрд░ рд╕рдХрддреА рд╣реИрдВред рдиреАрдЪреЗ рдХреА рдХреНрд╡реЗрд░реА рд╣рд░ Name рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо ID рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рд╣реЗрддреБ рдПрдХ рдЕрд╕реНрдерд╛рдпреА рдЯреЗрдмрд▓ рдмрдирд╛рддреА рд╣реИ рдФрд░ customers рдЯреЗрдмрд▓ рд╕реЗ рд╡реЗ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдбрд┐рд▓реАрдЯ рдХрд░рддреА рд╣реИ рдЬрд┐рдирдХрд╛ ID temp_customers рдЯреЗрдмрд▓ рдореЗрдВ рдирд╣реАрдВ рд╣реИред
CREATE TEMPORARY TABLE temp_customers AS
SELECT MIN ( ID) AS KeepID, Name
FROM customers
GROUP BY Name;
DELETE FROM customers
WHERE ID NOT IN ( SELECT KeepID FROM temp_customers) ;
DROP TABLE temp_customers; рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
рдКрдкрд░ рджрд┐рдпрд╛ CREATE TEMPORARY TABLE рд╡рд╛рд▓рд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗрд╡рд▓ MySQL рдФрд░ PostgreSQL рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рд╣реИред┬а
SQL Server рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣рдЯрд╛рдирд╛
SQL Server рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд░рд┐рдХреЙрд░реНрдб рд╣рдЯрд╛рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЗрдирдореЗрдВ INTO рдХреЗ рд╕рд╛рде DISTINCT, ROW_NUMBER(), рдФрд░ рдЕрд╕реНрдерд╛рдпреА рдЯреЗрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢рд╛рдорд┐рд▓ рд╣реИред
INTO рдХреЗ рд╕рд╛рде DISTINCT рдХрд╛ рдЙрдкрдпреЛрдЧ
рдЖрдк SELECT рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдореЗрдВ DISTINCT рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдпреВрдирд┐рдХ рд░рд┐рдХреЙрд░реНрдб рд╡рд╛рд▓реА рдПрдХ рдирдИ рдЯреЗрдмрд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдирдИ рдЯреЗрдмрд▓ рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рд░рд┐рдХреЙрд░реНрдб рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рдкрд░, рдЖрдк рдкреБрд░рд╛рдиреА рдЯреЗрдмрд▓ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдиреАрдЪреЗ рдХрд╛ рдЙрджрд╛рд╣рд░рдг customers рдЯреЗрдмрд▓ рд╕реЗ рдпреВрдирд┐рдХ рд░рд┐рдХреЙрд░реНрдб рд▓реЗрдХрд░ unique_customers рдЯреЗрдмрд▓ рдмрдирд╛рддрд╛ рд╣реИред
SELECT DISTINCT *
INTO unique_customers
FROM customers;
DROP TABLE customers;
EXEC sp_rename 'unique_customers' , 'customers' ; рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
ROW_NUMBER() рдХрд╛ рдЙрдкрдпреЛрдЧ
рдЖрдк ROW_NUMBER() рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднреА SQL Server рд╕реЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд░рд┐рдХреЙрд░реНрдб рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ Customers рдЯреЗрдмрд▓ рдореЗрдВ CustomerName рдХреЙрд▓рдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╣реИрдВ, рдФрд░ рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╕рдореВрд╣ рдореЗрдВ рдкрд╣рд▓реА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдмрд╛рдХреА рд╕рднреА рд╣рдЯрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
WITH CTE AS (
SELECT CustomerID, CustomerName, ROW_NUMBER( ) OVER ( PARTITION BY CustomerName ORDER BY CustomerID ASC ) AS RowNum
FROM Customers
)
DELETE FROM CTE
WHERE RowNum > 1 ; рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
рдЕрд╕реНрдерд╛рдпреА рдЯреЗрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ
рдХреНрдпреЛрдВрдХрд┐ SQL Server CREATE TEMPORARY TABLE рдХреЛ рд╕рдкреЛрд░реНрдЯ рдирд╣реАрдВ рдХрд░рддрд╛, рдЖрдк SELECT INTO рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред SQL Server рдореЗрдВ рдЕрд╕реНрдерд╛рдпреА рдЯреЗрдмрд▓ рдХреЗ рдирд╛рдо рдХреЗ рдЖрдЧреЗ # рдЙрдкрд╕рд░реНрдЧ рд╣реЛрддрд╛ рд╣реИред
SELECT MIN ( CustomerID) AS ID, CustomerName
INTO
FROM customers
GROUP BY CustomerName;
DELETE FROM customers
WHERE CustomerID NOT IN ( SELECT ID FROM
DROP TABLE рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
рдореИрдВ рд╕реБрдЭрд╛рд╡ рджреВрдБрдЧрд╛/рджреВрдБрдЧреА рдХрд┐ рд╣рдорд╛рд░реЗ SQL Server Fundamentals рд╕реНрдХрд┐рд▓ рдЯреНрд░реИрдХ рдХреЛ рдЖрдЬрд╝рдорд╛рдПрдБ рддрд╛рдХрд┐ рдЖрдк рдЯреЗрдмрд▓ рдЬреЙрдЗрди рдФрд░ рдбреЗрдЯрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреМрд╢рд▓ рдмреЗрд╣рддрд░ рдХрд░ рд╕рдХреЗрдВред SQL Server Developer рдХрд░рд┐рдпрд░ рдЯреНрд░реИрдХ рдЖрдкрдХреЛ SQL Server рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрд╡реЗрд░рд┐рдпрд╛рдБ рд▓рд┐рдЦрдиреЗ, рдЯреНрд░рдмрд▓рд╢реВрдЯ рдХрд░рдиреЗ, рдФрд░ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рдХреМрд╢рд▓ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред┬а┬а
рддреНрд╡рд░рд┐рдд рд╕рдВрджрд░реНрдн: SQL рдбрд┐рдбреБрдкреНрд▓реАрдХреЗрд╢рди рддрд░реАрдХреЗ
рдиреАрдЪреЗ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╕рднреА рдбрд┐рдбреБрдкреНрд▓реАрдХреЗрд╢рди рддрд░реАрдХреЛрдВ рдХрд╛ рд╕рд╛рд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддрд╛рдХрд┐ рдЖрдк рдЕрдкрдиреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдЕрдиреБрд░реВрдк рд╕рд╣реА рддрд░реАрдХрд╛ рдЬрд▓реНрджреА рдЪреБрди рд╕рдХреЗрдВред
рддрд░реАрдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд░рд┐рджреГрд╢реНрдп рдХреНрдпрд╛ рдбреЗрдЯрд╛ рдмрджрд▓рддрд╛ рд╣реИ? рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдорд░реНрдерди SELECT DISTINCTрдХреНрд╡реЗрд░реА рдкрд░рд┐рдгрд╛рдореЛрдВ рд╕реЗ рдпреВрдирд┐рдХ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдирд╣реАрдВ рд╕рднреА DBMS GROUP BY + рдПрдЧреНрд░реАрдЧреЗрдЯреНрд╕рдПрдЧреНрд░реАрдЧреЗрдЯ рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдпреВрдирд┐рдХ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдирд╣реАрдВ рд╕рднреА DBMS ROW_NUMBER() + CTE (SELECT)рдХреНрд╡реЗрд░рд┐рдпреЛрдВ рдореЗрдВ рд▓рдЪреАрд▓рд╛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдирд╣реАрдВ SQL Server, MySQL 8.0+, PostgreSQL ROW_NUMBER() + CTE (DELETE)рд╕реВрдХреНрд╖реНрдо рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣рдЯрд╛рдирд╛ рд╣рд╛рдБ SQL Server, MySQL 8.0+, PostgreSQL DELETE рдХреЗ рд╕рд╛рде рд╕рдмрдХреНрд╡реЗрд░реАNOT IN / MIN() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣рдЯрд╛рдПрдБрд╣рд╛рдБ рд╕рднреА DBMS Self-JOIN + DELETE рдкреЗрдпрд░рд╡рд╛рдЗрдЬрд╝ рддреБрд▓рдирд╛ рд╕реЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣рдЯрд╛рдПрдБ рд╣рд╛рдБ рд╕рднреА DBMS рдЕрд╕реНрдерд╛рдпреА рдЯреЗрдмрд▓ рддрд░реАрдХрд╛ рдмрдбрд╝реЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рдмреИрдЪ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рд╣рд╛рдБ MySQL, PostgreSQL (#temp SQL Server рдХреЗ рд▓рд┐рдП) SELECT DISTINCT INTOрдЯреЗрдмрд▓ рдХреА рд╕реНрд╡рдЪреНрдЫ рдкреНрд░рддрд┐ рдмрдирд╛рдирд╛ рд╣рд╛рдБ (рдЯреЗрдмрд▓ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд) SQL Server
рд╢реНрд░реЗрд╖реНрда рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдБ
рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдбреЗрдЯрд╛ рдЧреБрдгрд╡рддреНрддрд╛ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╕реНрдпрд╛ рд╣реИрдВред рдЕрдкрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рдЗрдВрд╕рд░реНрд╢рди рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рд╢реНрд░реЗрд╖реНрда рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рдкреНрд░рд╛рдЗрдорд░реА рдХреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ: рдкреНрд░рд╛рдЗрдорд░реА рдХреА рдХреЙрд▓рдо рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╣рд░ рд░рд┐рдХреЙрд░реНрдб рдпреВрдирд┐рдХ рд╣реЛ, рдЬрд┐рд╕рд╕реЗ рдЯреЗрдмрд▓ рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдорд╛рди рдЖрдиреЗ рд╕реЗ рд░реБрдХрддреЗ рд╣реИрдВред
рдпреВрдирд┐рдХ рдХрдВрд╕реНрдЯреНрд░реЗрдВрдЯ рд▓рд╛рдЧреВ рдХрд░реЗрдВ: рдХрд┐рд╕реА рднреА рдХреЙрд▓рдо рдкрд░ рдпреВрдирд┐рдХ рдХрдВрд╕реНрдЯреНрд░реЗрдВрдЯ рд▓рдЧрд╛рдиреЗ рд╕реЗ рдиреЙрди-рдкреНрд░рд╛рдЗрдорд░реА рдХреА рдХреЙрд▓рдореЛрдВ (рдЬреИрд╕реЗ рдИрдореЗрд▓ рдПрдбреНрд░реЗрд╕ рдпрд╛ рдлрд╝реЛрди рдирдВрдмрд░) рдореЗрдВ рднреА рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдирд╣реАрдВ рд░рд╣реЗрдВрдЧреЗред
рдЙрдЪрд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕ рдбрд┐рдЬрд╝рд╛рдЗрди рдФрд░ рдиреЙрд░реНрдорд▓рд╛рдЗрдЬрд╝реЗрд╢рди: рдкреНрд░рднрд╛рд╡реА рд╕реНрдХреАрдорд╛ рдбрд┐рдЬрд╝рд╛рдЗрди рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдиреЙрд░реНрдорд▓рд╛рдЗрдЬрд╝реЗрд╢рди рджреЛрд╣рд░рд╛рд╡ рдФрд░ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдбреЗрдЯрд╛ рдХрдо рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд╕реЗ рд╣рд░ рд░рд┐рдХреЙрд░реНрдб рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЯреЗрдмрд▓реЛрдВ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддрд╛ рд╣реИред
рдпреВрдирд┐рдХ рдЗрдВрдбреЗрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ: рдпреВрдирд┐рдХ рдЗрдВрдбреЗрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдЖрдк рдХреБрдЫ рдХреЙрд▓рдо рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдмрд┐рдирд╛ рдкреВрд░реЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдкрд░ рдЯреЗрдмрд▓-рд╕реНрддрд░реАрдп рдХрдВрд╕реНрдЯреНрд░реЗрдВрдЯ рд▓рдЧрд╛рдПред
рдирд┐рдпрдорд┐рдд рдбреЗрдЯрд╛ рдСрдбрд┐рдЯ: рдЕрдкрдиреЗ рд╡реНрдпрд╡рд╕рд╛рдпрд┐рдХ рдирд┐рдпрдореЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рдВрднрд╛рд╡рд┐рдд рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдкрд╣рдЪрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдХреНрд╡реЗрд░рд┐рдпрд╛рдБ рдЪрд▓рд╛рдХрд░ рдбреЗрдЯрд╛ рдСрдбрд┐рдЯ рдХрд░реЗрдВред
рдирд┐рд╖реНрдХрд░реНрд╖
рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╣рдЯрд╛рдирд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдФрд░ рдбреЗрдЯрд╛ рд╢реБрджреНрдзрддрд╛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рд╕рдВрд╢реЛрдзрди рд╕реЗ рдкрд╣рд▓реЗ рдЕрдкрдиреЗ рдбреЗрдЯрд╛ рдХрд╛ рдмреИрдХрдЕрдк рд▓реЗрдирд╛ рд╣рдореЗрд╢рд╛ рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрднреНрдпрд╛рд╕ рд╣реИ, рддрд╛рдХрд┐ рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ рдбреЗрдЯрд╛ рд╣рд╛рдирд┐ рди рд╣реЛред
рдпрджрд┐ рдЖрдк рдПрдХ рджрдХреНрд╖ рдбреЗрдЯрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдмрдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрд╡рд╢реНрдпрдХ рдХреМрд╢рд▓ рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░рд╛ Associate Data Analyst in SQL рдХрд░рд┐рдпрд░ рдЯреНрд░реИрдХ рджреЗрдЦреЗрдВред рдпрджрд┐ рдЖрдк SQL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░реЛрдлреЗрд╢рдирд▓ рдбреИрд╢рдмреЛрд░реНрдб рдмрдирд╛рдирд╛ рд╕реАрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ Reporting in SQL рдХреЛрд░реНрд╕ рднреА рдЙрдкрдпреБрдХреНрдд рд╣реИред рдЕрдВрдд рдореЗрдВ, рдореИрдВ SQL Associate Certification рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛/рдХрд░рддреА рд╣реВрдБ, рддрд╛рдХрд┐ рдЖрдк рдбреЗрдЯрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП SQL рдореЗрдВ рдЕрдкрдиреА рдорд╣рд╛рд░рдд рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХреЗрдВ рдФрд░ рдЕрдиреНрдп рдбреЗрдЯрд╛ рдкреНрд░реЛрдлреЗрд╢рдирд▓реНрд╕ рдХреЗ рдмреАрдЪ рдЕрд▓рдЧ рджрд┐рдЦреЗрдВред
рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд░рд┐рдХреЙрд░реНрдб рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬреЛ рдбреЗрдЯрд╛ рдЕрдЦрдВрдбрддрд╛ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИред рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣рдЯрд╛рдирд╛ рдбреЗрдЯрд╛ рдХреА рд╢реБрджреНрдзрддрд╛ рдмрдирд╛рдП рд░рдЦрдиреЗ, рд╕реНрдЯреЛрд░реЗрдЬ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ, рдФрд░ рдХреНрд╡реЗрд░реА рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо SQL рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╣рдЯрд╛рдиреЗ рдХреА рд╡рд┐рднрд┐рдиреНрди рддрдХрдиреАрдХреЛрдВ рдХреЛ, рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓реЛрдВ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░рдмрдВрдзрди рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк, рд╕рдордЭреЗрдВрдЧреЗред
рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ DataCamp рдХреЗ Introduction to SQL рдФрд░ Learn SQL рдХреЛрд░реНрд╕ рд▓реЗрдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛/рджреЗрддреА рд╣реВрдБ рддрд╛рдХрд┐ рдЖрдк SQL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рдирд┐рдХрд╛рд▓рдиреЗ рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреА рдмреБрдирд┐рдпрд╛рджреА рдЬрд╛рдирдХрд╛рд░реА рд╕реАрдЦ рд╕рдХреЗрдВред рд╕рд╛рде рд╣реА, рдореБрдЭреЗ SQL Basics Cheat Sheet рднреА рдЙрдкрдпреЛрдЧреА рд╕рдВрджрд░реНрдн рд▓рдЧрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЖрдк рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВтАФрдЗрд╕рдореЗрдВ рд╕рдмрд╕реЗ рдЖрдо SQL рдлрд╝рдВрдХреНрд╢рдиреЛрдВ рдХрд╛ рд╕рд╛рд░ рд╣реИред
TL;DR
SELECT DISTINCTрдпрд╛GROUP BYрдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯреЗрдмрд▓ рдХреЛ рдмрджрд▓реЗ рдмрд┐рдирд╛ рдпреВрдирд┐рдХ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдмреЗрд╣рддрд░ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд▓рд┐рдП
ROW_NUMBER()рдХреЛ CTE рдФрд░DELETEрдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдЪреБрдирд┐рдВрджрд╛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рд╣рдЯрд╛рдП рдЬрд╛ рд╕рдХреЗрдВрдХрд┐рд╕реА рднреА DBMS рдореЗрдВ рд╕рд░рд▓ рдбрд┐рдбреБрдкреНрд▓реАрдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рд╕рдмрдХреНрд╡реЗрд░реА (
NOT IN/MIN()) рдХреЗ рд╕рд╛рдеDELETEрдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдмрдбрд╝реЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП, рдЕрд╕реНрдерд╛рдпреА рдЯреЗрдмрд▓ рд╕реЗ рдмреИрдЪ-рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХрд░рдХреЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣рдЯрд╛рдПрдБ
рдкреНрд░рд╛рдЗрдорд░реА рдХреА, рдпреВрдирд┐рдХ рдХрдВрд╕реНрдЯреНрд░реЗрдВрдЯ, рдФрд░ рдЙрдЪрд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕ рдиреЙрд░реНрдорд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд╕реЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд░реЛрдХреЗрдВ
SQL рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд╕рдордЭрдирд╛
SQL рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╡реЗ рд░рд┐рдХреЙрд░реНрдб рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рд╕рднреА рдпрд╛ рдЪреБрдиреЗ рд╣реБрдП рдХреЙрд▓рдореЛрдВ рдореЗрдВ рд╕рдорд╛рди рдорд╛рди рд╣реЛрддреЗ рд╣реИрдВред SQL рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░рдг рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ:
рдЖрдЧреЗ рдХреЗ рднрд╛рдЧ рдореЗрдВ, рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ SQL рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреИрд╕реЗ рд╣рдЯрд╛рдПрдБред рд▓реЗрдЦ рдХреЛ рджреЛ рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рдмрд╛рдБрдЯрд╛ рдЧрдпрд╛ рд╣реИ: рдкрд╣рд▓реЗ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдмрддрд╛рдПрдБрдЧреЗ рдХрд┐ рд░рд┐рдкреЛрд░реНрдЯ рдпрд╛ рдбреИрд╢рдмреЛрд░реНрдб рдХреЗ рд▓рд┐рдП рдЖрдк рдЬреЛ рдбреЗрдЯрд╛ рдирд┐рдХрд╛рд▓ рд░рд╣реЗ рд╣реИрдВ, рдЙрд╕рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреИрд╕реЗ рд╣рдЯрд╛рдПрдБ; рджреВрд╕рд░реЗ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреИрд╕реЗ рд╣рдЯрд╛рдПрдБред
рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХреИрд╕реЗ рдХрд░реЗрдВ
рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдкрд╣рдЪрд╛рдиреЗрдВ рдХрд┐ рдХреМрди-рд╕реА рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣реИрдВред
GROUP BYрдХреЗ рд╕рд╛рдеHAVING COUNT(*) > 1рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╡реЗ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдвреВрдБрдвреЗрдВ рдЬреЛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдЖрддреА рд╣реИрдВ:рдпрд╣ рдХреНрд╡реЗрд░реА рд╣рд░ рдЙрд╕
NameрдХреЛ рд▓реМрдЯрд╛рддреА рд╣реИ рдЬреЛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдЖрддрд╛ рд╣реИ, рд╕рд╛рде рдореЗрдВ рдЙрд╕рдХреА рдЖрд╡реГрддреНрддрд┐ рднреАред рдЖрдк рдЗрд╕реЗ рдХрдИ рдХреЙрд▓рдо рддрдХ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВтАФрдЙрдиреНрд╣реЗрдВSELECTрдФрд░GROUP BYрджреЛрдиреЛрдВ рдореЗрдВ рдЬреЛрдбрд╝рдХрд░редрд╣рд░ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╕рдореВрд╣ рдХреЗ рднреАрддрд░ рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдХреА рд░реИрдВрдХ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП
ROW_NUMBER()рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:рдЬрд╣рд╛рдБ
row_num > 1рд╣реИ, рд╡реЗ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣реИрдВред рдкрд╣рдЪрд╛рди рд╣реЛрдиреЗ рдкрд░, рдиреАрдЪреЗ рджрд┐рдП рдЕрдиреБрднрд╛рдЧреЛрдВ рд╕реЗ рдЙрдкрдпреБрдХреНрдд рд╣рдЯрд╛рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдЪреБрдиреЗрдВредрдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдирд┐рдХрд╛рд▓реЗ рдЧрдП рдбреЗрдЯрд╛ рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣рдЯрд╛рдиреЗ рдХреЗ рддрд░реАрдХреЗ
SQL рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рдирд┐рдХрд╛рд▓рддреЗ рд╕рдордп рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣рдЯрд╛рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВред рд╣рд░ рддрд░реАрдХрд╛ DBMS рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ SQL Server, MySQL, рдФрд░ PostgreSQLред рдЗрд╕ рднрд╛рдЧ рдореЗрдВ рд╣рдо рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣рдЯрд╛рдиреЗ рдХреА рд╡рд┐рдзрд┐рдпрд╛рдБ рджреЗрдЦреЗрдВрдЧреЗ рдФрд░ рд╣рд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдмрд╛рддреЛрдВ рдкрд░ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓реЗрдВрдЧреЗред┬ардзреНрдпрд╛рди рд░рдЦреЗрдВ, рдпреЗ рддрд░реАрдХреЗ рдбреЗрдЯрд╛ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░ рдпреВрдирд┐рдХ рд░рд┐рдХреЙрд░реНрдб рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЖрдзрд╛рд░рднреВрдд рдЯреЗрдмрд▓ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдирд╣реАрдВ рдХрд░рддреЗред
DISTINCT рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ
DISTINCTрдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧSELECTрд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдореЗрдВ рдпреВрдирд┐рдХ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдПDISTINCTрдХреАрд╡рд░реНрдб рдХрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ MySQL, PostgreSQL, рдФрд░ SQL Server рдореЗрдВ рд╕рдорд╛рди рд╣реИред рдиреАрдЪреЗ рджреА рдЧрдИ рдХреНрд╡реЗрд░реАcustomersрдЯреЗрдмрд▓ рд╕реЗ рдпреВрдирд┐рдХ рдЧреНрд░рд╛рд╣рдХ рдирд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧреАредрдПрдЧреНрд░реАрдЧреЗрдЯ рдлрд╝рдВрдХреНрд╢рдиреЛрдВ рдХреЗ рд╕рд╛рде GROUP BY рдХрд╛ рдЙрдкрдпреЛрдЧ
GROUP BYрдХреНрд▓реЙрдЬрд╝,MAX(),MIN(), рдпрд╛COUNT()рдЬреИрд╕реЗ рдПрдЧреНрд░реАрдЧреЗрдЯ рдлрд╝рдВрдХреНрд╢рдиреЛрдВ рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░, рдЯреЗрдмрд▓реЛрдВ рд╕реЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд░рд┐рдХреЙрд░реНрдб рд╣рдЯрд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИредGROUP BYрдХреНрд▓реЙрдЬрд╝ рдпрд╣ рдЪреБрдирдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рди рд░рд┐рдХреЙрд░реНрдбреЛрдВ рдХреЛ рд░рдЦрдирд╛ рд╣реИ рдФрд░ рдЕрдиреНрдп рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЛ рд╣рдЯрд╛рдирд╛ рд╣реИредрдорд╛рди рд▓реАрдЬрд┐рдП рдЖрдк рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдЧреНрд░рд╛рд╣рдХ рд░рд┐рдХреЙрд░реНрдб рд╣рдЯрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдкрд░ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ ID рд╡рд╛рд▓рд╛ рд░рд┐рдХреЙрд░реНрдб рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдк
GROUP BYрдХреНрд▓реЙрдЬрд╝ рдХреЛMAX()рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдиреАрдЪреЗ рджрд┐рдЦрд╛рдП рдЕрдиреБрд╕рд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗредMySQL рдФрд░ SQL Server
GROUP BYрдХреЗ рд╕рд╛рде рдПрдЧреНрд░реАрдЧреЗрдЯ рдлрд╝рдВрдХреНрд╢рдиреЛрдВ рдФрд░JOINрдХреНрд▓реЙрдЬрд╝ рд╡рд╛рд▓реЗ рдКрдкрд░ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рд╕рдкреЛрд░реНрдЯ рдХрд░рддреЗ рд╣реИрдВред┬аROW_NUMBER() рдФрд░ Common Table Expressions (CTE) рдХрд╛ рдЙрдкрдпреЛрдЧ
ROW_NUMBER()рдлрд╝рдВрдХреНрд╢рди рдХреЛ Common Table Expression (CTE) рдХреЗ рд╕рд╛рде рдорд┐рд▓рд╛рдХрд░, рдЖрдк рдЕрдкрдиреЗ рдорд╛рдирджрдВрдбреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВредPARTITION BYрдФрд░ORDER BYрдХреНрд▓реЙрдЬрд╝ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ROW_NUMBERрд╣рд░ рдкрдВрдХреНрддрд┐ рдХреЛ рдХреНрд░рдорд╛рдВрдХ рджреЗрддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рдЖрдк рдЖрд╡рд╢реНрдпрдХ рдорд╛рдирджрдВрдб рди рдкреВрд░реА рдХрд░рдиреЗ рд╡рд╛рд▓реА рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВредрдиреАрдЪреЗ рдХреА рдХреНрд╡реЗрд░реА рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдкрд╣рдЪрд╛рдирддреА рд╣реИ рдФрд░ рдкрд╣рд▓реА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдмрд╛рдХреА рд╕рднреА рдХреЛ рд╣рдЯрд╛ рджреЗрддреА рд╣реИред
рдпрд╣ рддрд░реАрдХрд╛ SQL Server, MySQL, рдФрд░ PostgreSQL рдХреЗ рдЖрдзреБрдирд┐рдХ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдмрдбрд╝реЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдпрд╛ рдЬрдЯрд┐рд▓ рд╢рд░реНрддреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдЖрдк рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рддрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди-рд╕рд╛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд░рдЦрдирд╛ рд╣реИред
Self-JOIN рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣рдЯрд╛рдирд╛
рд╕реЗрд▓реНрдл-рдЬреЙрдЗрди рд╕реЗ рдЖрдк рдХрд┐рд╕реА рдЯреЗрдмрд▓ рдХреА рддреБрд▓рдирд╛ рдЙрд╕реА рдЯреЗрдмрд▓ рд╕реЗ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рд╡рд┐рд╢реЗрд╖ рдорд╛рдирджрдВрдбреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд░рд┐рдХреЙрд░реНрдб рдХреА рддреБрд▓рдирд╛ рдХрд░рдХреЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдФрд░ рд╣рдЯрд╛рдиреЗ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИред рдиреАрдЪреЗ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдЙрдЪреНрдЪрддрд░ ID рд╡рд╛рд▓реА рдкрдВрдХреНрддрд┐ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрд▓реНрдл-рдЬреЙрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рддрд╛рдХрд┐ рд╣рд░ рдирд╛рдо рдХреА рдХреЗрд╡рд▓ рдкрд╣рд▓реА рдЙрдкрд╕реНрдерд┐рддрд┐ рдмрдЪреЗред
рдКрдкрд░ рдХрд╛ рддрд░реАрдХрд╛ SQL Server, MySQL, рдФрд░ PostgreSQL рд╕рд╣рд┐рдд рдкреНрд░рдореБрдЦ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдПрдЧреНрд░реАрдЧреЗрдЯ рдлрд╝рдВрдХреНрд╢рдиреЛрдВ рдФрд░ рдЬреЙрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдбреЗрдЯрд╛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдирд╛ рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░рд╛ Intermediate SQL рдХреЛрд░реНрд╕ рджреЗрдЦреЗрдВред
рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣рдЯрд╛рдиреЗ рдХреЗ рддрд░реАрдХреЗ
рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЖрдк рдХреНрд╡реЗрд░рд┐рдпреЛрдВ рд╕реЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд░рд┐рдХреЙрд░реНрдб рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдк рдЙрдиреНрд╣реЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдбрд┐рд▓реАрдЯ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдбреЗрдЯрд╛ рдЧреБрдгрд╡рддреНрддрд╛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рддрд░реАрдХрд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдирд┐рдореНрди рд╡рд┐рдзрд┐рдпрд╛рдБ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИрдВред
ROW_NUMBER() рдФрд░ DELETE рдХрд╛ рдЙрдкрдпреЛрдЧ
ROW_NUMBER()рдкрд░рд┐рднрд╛рд╖рд┐рдд рдкрд╛рд░реНрдЯрд┐рд╢рди рдХреЗ рднреАрддрд░ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдХреНрд░рдорд╛рдВрдХрд┐рдд рдХрд░рддрд╛ рд╣реИредDELETEрд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░, рдпрд╣ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЙрд▓рдореЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд░реИрдВрдХ рдХрд░ рдЕрд╡рд╛рдВрдЫрд┐рдд рд░рд┐рдХреЙрд░реНрдб рд╣рдЯрд╛рддреЗ рд╣реБрдП рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдкрд╣рдЪрд╛рдирдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рдпрд╣ рддрд░реАрдХрд╛ MySQL (8.0 рд╕реЗ), PostgreSQL, рдФрд░ SQL Server рдХреЗ рдЖрдзреБрдирд┐рдХ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИредрдорд╛рди рд▓реАрдЬрд┐рдП рдЖрдк
NameрдХреЙрд▓рдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдЧреНрд░рд╛рд╣рдХ рд░рд┐рдХреЙрд░реНрдб рд╣рдЯрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ рдкрд╣рд▓реА рдЙрдкрд╕реНрдерд┐рддрд┐ (рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛ID) рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:рд╕рдмрдХреНрд╡реЗрд░реА рдХреЗ рд╕рд╛рде DELETE рдХрд╛ рдЙрдкрдпреЛрдЧ
рдХрднреА-рдХрднреА, рд╕рдмрдХреНрд╡реЗрд░реА рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рд▓
DELETEрдСрдкрд░реЗрд╢рди рд╕реЗ рднреА рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣рдЯрд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рддрд░реАрдХрд╛ MySQL рдпрд╛ PostgreSQL рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ, рдЬрд╣рд╛рдБROW_NUMBER()рдЙрдкрд▓рдмреНрдз рди рд╣реЛредрдиреАрдЪреЗ рдХреА рдХреНрд╡реЗрд░реА
customersрдЯреЗрдмрд▓ рд╕реЗ рд╡реЗ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдбрд┐рд▓реАрдЯ рдХрд░рддреА рд╣реИ рдЬрд┐рдирдХрд╛IDрд╣рд░NameрдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╣рд░ рдпреВрдирд┐рдХNameрдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛IDрд╡рд╛рд▓рд╛ рд░рд┐рдХреЙрд░реНрдб рд░рдЦрддреА рд╣реИредHAVING рдХреНрд▓реЙрдЬрд╝ рдХреЗ рд╕рд╛рде GROUP BY рдХрд╛ рдЙрдкрдпреЛрдЧ
рдЬрдм рдЖрдкрдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЙрд▓рдореЛрдВ рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдорд╛рди рдЬрд╛рдБрдЪрдиреЗ рд╣реЛрдВ, рддреЛ
GROUP BYрдХреЛHAVINGрдХреНрд▓реЙрдЬрд╝ рдХреЗ рд╕рд╛рде рдорд┐рд▓рд╛рдХрд░ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдкрд╣рдЪрд╛рдиреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд╕реЗ рдЖрдк рджрд┐рдП рдЧрдП рдорд╛рдирджрдВрдбреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡рд┐рд╢реЗрд╖ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдбрд┐рд▓реАрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рддрд░реАрдХрд╛ SQL Server, MySQL, рдФрд░ PostgreSQL рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реИредрдиреАрдЪреЗ рдХреА рдХреНрд╡реЗрд░рд┐рдпрд╛рдБ рдкрд╣рд▓реЗ рдкрд╣рдЪрд╛рдирддреА рд╣реИрдВ рдХрд┐ рдХреМрди-рд╕реЗ рдирд╛рдо рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдЖрддреЗ рд╣реИрдВ, рдлрд┐рд░ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдбрд┐рд▓реАрдЯ рдХрд░рддреА рд╣реИрдВ рдФрд░ рд╣рд░
NameрдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛IDрд╡рд╛рд▓рд╛ рд░рд┐рдХреЙрд░реНрдб рд░рдЦрддреА рд╣реИрдВредрдмреИрдЪ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрд╕реНрдерд╛рдпреА рдЯреЗрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ
рдЕрд╕реНрдерд╛рдпреА рдЯреЗрдмрд▓ рдмрдбрд╝реЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдореЗрдВ рдмреИрдЪ-рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдФрд░ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рднрд╛рд╡реА рд╣реИрдВред рдпрд╣ рддрд░реАрдХрд╛ рддрдм рдЙрдкрдпреЛрдЧреА рд╣реИ рдЬрдм рдПрдХрд▓ рдХреНрд╡реЗрд░рд┐рдпрд╛рдБ рдкреНрд░рджрд░реНрд╢рди рд╕рдорд╕реНрдпрд╛рдПрдБ рдкреИрджрд╛ рдХрд░ рд╕рдХрддреА рд╣реИрдВред рдиреАрдЪреЗ рдХреА рдХреНрд╡реЗрд░реА рд╣рд░
NameрдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдоIDрд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рд╣реЗрддреБ рдПрдХ рдЕрд╕реНрдерд╛рдпреА рдЯреЗрдмрд▓ рдмрдирд╛рддреА рд╣реИ рдФрд░customersрдЯреЗрдмрд▓ рд╕реЗ рд╡реЗ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдбрд┐рд▓реАрдЯ рдХрд░рддреА рд╣реИ рдЬрд┐рдирдХрд╛IDtemp_customersрдЯреЗрдмрд▓ рдореЗрдВ рдирд╣реАрдВ рд╣реИредрдКрдкрд░ рджрд┐рдпрд╛
CREATE TEMPORARY TABLEрд╡рд╛рд▓рд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗрд╡рд▓ MySQL рдФрд░ PostgreSQL рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рд╣реИред┬аSQL Server рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣рдЯрд╛рдирд╛
SQL Server рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд░рд┐рдХреЙрд░реНрдб рд╣рдЯрд╛рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЗрдирдореЗрдВ
INTOрдХреЗ рд╕рд╛рдеDISTINCT,ROW_NUMBER(), рдФрд░ рдЕрд╕реНрдерд╛рдпреА рдЯреЗрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢рд╛рдорд┐рд▓ рд╣реИредINTO рдХреЗ рд╕рд╛рде DISTINCT рдХрд╛ рдЙрдкрдпреЛрдЧ
рдЖрдк
SELECTрд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдореЗрдВDISTINCTрдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдпреВрдирд┐рдХ рд░рд┐рдХреЙрд░реНрдб рд╡рд╛рд▓реА рдПрдХ рдирдИ рдЯреЗрдмрд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдирдИ рдЯреЗрдмрд▓ рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рд░рд┐рдХреЙрд░реНрдб рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рдкрд░, рдЖрдк рдкреБрд░рд╛рдиреА рдЯреЗрдмрд▓ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдиреАрдЪреЗ рдХрд╛ рдЙрджрд╛рд╣рд░рдгcustomersрдЯреЗрдмрд▓ рд╕реЗ рдпреВрдирд┐рдХ рд░рд┐рдХреЙрд░реНрдб рд▓реЗрдХрд░unique_customersрдЯреЗрдмрд▓ рдмрдирд╛рддрд╛ рд╣реИредROW_NUMBER() рдХрд╛ рдЙрдкрдпреЛрдЧ
рдЖрдк
ROW_NUMBER()рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднреА SQL Server рд╕реЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд░рд┐рдХреЙрд░реНрдб рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕CustomersрдЯреЗрдмрд▓ рдореЗрдВCustomerNameрдХреЙрд▓рдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╣реИрдВ, рдФрд░ рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╕рдореВрд╣ рдореЗрдВ рдкрд╣рд▓реА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдмрд╛рдХреА рд╕рднреА рд╣рдЯрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВредрдЕрд╕реНрдерд╛рдпреА рдЯреЗрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ
рдХреНрдпреЛрдВрдХрд┐ SQL Server
CREATE TEMPORARY TABLEрдХреЛ рд╕рдкреЛрд░реНрдЯ рдирд╣реАрдВ рдХрд░рддрд╛, рдЖрдкSELECT INTOрдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред SQL Server рдореЗрдВ рдЕрд╕реНрдерд╛рдпреА рдЯреЗрдмрд▓ рдХреЗ рдирд╛рдо рдХреЗ рдЖрдЧреЗ#рдЙрдкрд╕рд░реНрдЧ рд╣реЛрддрд╛ рд╣реИредрдореИрдВ рд╕реБрдЭрд╛рд╡ рджреВрдБрдЧрд╛/рджреВрдБрдЧреА рдХрд┐ рд╣рдорд╛рд░реЗ SQL Server Fundamentals рд╕реНрдХрд┐рд▓ рдЯреНрд░реИрдХ рдХреЛ рдЖрдЬрд╝рдорд╛рдПрдБ рддрд╛рдХрд┐ рдЖрдк рдЯреЗрдмрд▓ рдЬреЙрдЗрди рдФрд░ рдбреЗрдЯрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреМрд╢рд▓ рдмреЗрд╣рддрд░ рдХрд░ рд╕рдХреЗрдВред SQL Server Developer рдХрд░рд┐рдпрд░ рдЯреНрд░реИрдХ рдЖрдкрдХреЛ SQL Server рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрд╡реЗрд░рд┐рдпрд╛рдБ рд▓рд┐рдЦрдиреЗ, рдЯреНрд░рдмрд▓рд╢реВрдЯ рдХрд░рдиреЗ, рдФрд░ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рдХреМрд╢рд▓ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред┬а┬а
рддреНрд╡рд░рд┐рдд рд╕рдВрджрд░реНрдн: SQL рдбрд┐рдбреБрдкреНрд▓реАрдХреЗрд╢рди рддрд░реАрдХреЗ
рдиреАрдЪреЗ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╕рднреА рдбрд┐рдбреБрдкреНрд▓реАрдХреЗрд╢рди рддрд░реАрдХреЛрдВ рдХрд╛ рд╕рд╛рд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддрд╛рдХрд┐ рдЖрдк рдЕрдкрдиреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдЕрдиреБрд░реВрдк рд╕рд╣реА рддрд░реАрдХрд╛ рдЬрд▓реНрджреА рдЪреБрди рд╕рдХреЗрдВред
SELECT DISTINCTGROUP BY+ рдПрдЧреНрд░реАрдЧреЗрдЯреНрд╕ROW_NUMBER()+ CTE (SELECT)ROW_NUMBER()+ CTE (DELETE)DELETEрдХреЗ рд╕рд╛рде рд╕рдмрдХреНрд╡реЗрд░реАNOT IN/MIN()рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣рдЯрд╛рдПрдБJOIN+DELETE#tempSQL Server рдХреЗ рд▓рд┐рдП)SELECT DISTINCT INTOрд╢реНрд░реЗрд╖реНрда рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдБ
рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдбреЗрдЯрд╛ рдЧреБрдгрд╡рддреНрддрд╛ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╕реНрдпрд╛ рд╣реИрдВред рдЕрдкрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рдЗрдВрд╕рд░реНрд╢рди рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рд╢реНрд░реЗрд╖реНрда рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рдирд┐рд╖реНрдХрд░реНрд╖
рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╣рдЯрд╛рдирд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдФрд░ рдбреЗрдЯрд╛ рд╢реБрджреНрдзрддрд╛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рд╕рдВрд╢реЛрдзрди рд╕реЗ рдкрд╣рд▓реЗ рдЕрдкрдиреЗ рдбреЗрдЯрд╛ рдХрд╛ рдмреИрдХрдЕрдк рд▓реЗрдирд╛ рд╣рдореЗрд╢рд╛ рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрднреНрдпрд╛рд╕ рд╣реИ, рддрд╛рдХрд┐ рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ рдбреЗрдЯрд╛ рд╣рд╛рдирд┐ рди рд╣реЛред
рдпрджрд┐ рдЖрдк рдПрдХ рджрдХреНрд╖ рдбреЗрдЯрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдмрдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрд╡рд╢реНрдпрдХ рдХреМрд╢рд▓ рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░рд╛ Associate Data Analyst in SQL рдХрд░рд┐рдпрд░ рдЯреНрд░реИрдХ рджреЗрдЦреЗрдВред рдпрджрд┐ рдЖрдк SQL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░реЛрдлреЗрд╢рдирд▓ рдбреИрд╢рдмреЛрд░реНрдб рдмрдирд╛рдирд╛ рд╕реАрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ Reporting in SQL рдХреЛрд░реНрд╕ рднреА рдЙрдкрдпреБрдХреНрдд рд╣реИред рдЕрдВрдд рдореЗрдВ, рдореИрдВ SQL Associate Certification рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛/рдХрд░рддреА рд╣реВрдБ, рддрд╛рдХрд┐ рдЖрдк рдбреЗрдЯрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП SQL рдореЗрдВ рдЕрдкрдиреА рдорд╣рд╛рд░рдд рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХреЗрдВ рдФрд░ рдЕрдиреНрдп рдбреЗрдЯрд╛ рдкреНрд░реЛрдлреЗрд╢рдирд▓реНрд╕ рдХреЗ рдмреАрдЪ рдЕрд▓рдЧ рджрд┐рдЦреЗрдВред