рд╣рд╛рд▓рд╛рдВрдХрд┐ SQL рдХреНрд╡реЗрд░реАрдЬрд╝ рдХрд╛ рд╕рдВрдХрд▓рди рдХрд░рдирд╛ рдбреЗрдЯрд╛ рд╡реИрдЬреНрдЮрд╛рдирд┐рдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди SQL рдХреА рдЕрдЪреНрдЫреА рд╕рдордЭ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рдж рдЬрд╝рд░реВрд░реА рд╣реИ, рдЬреЛ рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрд┐рд╕реА рднреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдореЗрдВ рд╕рдлрд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╣рд╛рдБ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдПрд╕рдХреНрдпреВрдПрд▓ рд╣реА рдирд╣реАрдВ рд╣реИ SELECT
, FROM
рдФрд░ WHERE
ред рдЬрд┐рддрдирд╛ рдЕрдзрд┐рдХ рдПрд╕рдХреНрдпреВрдПрд▓ рдирд┐рд░реНрдорд╛рдг рдПрдХ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдЬрд╛рдирддрд╛ рд╣реИ, рдЙрддрдирд╛ рд╣реА рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ рдХрд┐ рд╡рд╣ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╣ рд╕рдм рдХреБрдЫ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреА рдЙрд╕реЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рд▓реЗрдЦ рдХреЗ рд▓реЗрдЦрдХ, рдЬрд┐рд╕рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдЖрдЬ рд╣рдо рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рджреЛ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рд╣реИ:
- рдмреБрдирд┐рдпрд╛рджреА рдПрд╕рдХреНрдпреВрдПрд▓ рдЬреНрдЮрд╛рди рд╕реЗ рдкрд░реЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рддрдВрддреНрд░ рдХреА рдЦреЛрдЬред
- SQL рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ Leetcode рдХреЗ 5 SQL рдкреНрд░рд╢реНрди рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рд╡реЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЕрдХреНрд╕рд░ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдореЗрдВ рд╕рд╛рдордиреЗ рдЖрддреЗ рд╣реИрдВредрдкреНрд░рд╢реНрди рд╕рдВрдЦреНрдпрд╛ 1: рд╡реЗрддрди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рджреВрд╕рд░рд╛ рд╕реНрдерд╛рди
рдХрд░реНрдордЪрд╛рд░реА рд╡реЗрддрди рдЬрд╛рдирдХрд╛рд░реА (рд╕рд╛рде рдореЗрдЬ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ SQL рдХреНрд╡реЗрд░реА рд▓рд┐рдЦреЗрдВ Employee
) рдПрдХ рдкреНрд░рд╡реЗрд╢ рджреВрд╕рд░рд╛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╡реЗрддрди рд╕реЗ рдпреБрдХреНрддредрдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдиреАрдЪреЗ рджреА рдЧрдИ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдРрд╕реА рдХреНрд╡реЗрд░реА рд╡рд╛рдкрд╕ рдЖрдиреА рдЪрд╛рд╣рд┐рдП 200
ред рдпрджрд┐ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЙрдЪреНрдЪрддрдо рд╡реЗрддрди рд╕реЗ рдХрдо рдореВрд▓реНрдп рдирд╣реАрдВ рд╣реИ, рддреЛ рдЕрдиреБрд░реЛрдз рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП null
ред+
| Id | Salary |
+
| 1 | 100 |
| 2 | 200 |
| 3 | 300 |
+
Ision рдирд┐рд░реНрдгрдп A: рдЙрдкрдпреЛрдЧ IFNULL
рдФрд░OFFSET
рдпрд╣рд╛рдБ рдореБрдЦреНрдп рддрдВрддреНрд░ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:IFNULL(expression, alt)
: expression
рдпрджрд┐ рдпрд╣ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИ рддреЛ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдЕрдкрдирд╛ рддрд░реНрдХ рджреЗрддрд╛ рд╣реИ null
ред рдЕрдиреНрдпрдерд╛, рддрд░реНрдХ рд╡рд╛рдкрд╕ рдЖ рдЧрдпрд╛ рд╣реИ alt
ред null
рдпрджрд┐ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рдорд╛рди рдирд╣реАрдВ рд╣реИ рддреЛ рд╣рдо рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ редOFFSET
: рдЗрд╕ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ ORDER BY
рдкрд╣рд▓реА n
рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реИ рдХрд┐ рд╣рдо рдкрд░рд┐рдгрд╛рдо рдХреА рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ (рдпрд╛рдиреА, рджреВрд╕рд░рд╛ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рд╡реЗрддрди, рдЬрд┐рд╕ рдкрд░ рдбреЗрдЯрд╛ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╣реИ)ред
рдпрд╣рд╛рдБ рдПрдХ рддреИрдпрд╛рд░ рдЕрдиреБрд░реЛрдз рд╣реИ:SELECT
IFNULL(
(SELECT DISTINCT Salary
FROM Employee
ORDER BY Salary DESC
LIMIT 1 OFFSET 1
), null) as SecondHighestSalary
FROM Employee
LIMIT 1
тЦН рд╕рдорд╛рдзрд╛рди рдмреА: тАЛтАЛрдЙрдкрдпреЛрдЧ MAX
рдиреАрдЪреЗ рдХреНрд╡реЗрд░реА рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ MAX
ред рдпрд╣рд╛рдВ, рдЙрдЪреНрдЪрддрдо рд╡реЗрддрди рдорд╛рди рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкреВрд░реЗ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдЕрдзрд┐рдХрддрдо рд╡реЗрддрди рдХреЗ рдмрд░рд╛рдмрд░ рдирд╣реАрдВред рдирддреАрдЬрддрди, рд╣рдореЗрдВ рд╡рд╣ рдорд┐рд▓рддрд╛ рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдП - рджреВрд╕рд░рд╛ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рд╡реЗрддрдиредSELECT MAX(salary) AS SecondHighestSalary
FROM Employee
WHERE salary != (SELECT MAX(salary) FROM Employee)
рдкреНрд░рд╢реНрди # 2: рдИрдореЗрд▓ рдкрддреЛрдВ рдХреА рдирдХрд▓ рдХрд░реЗрдВ
SQL рдХреНрд╡реЗрд░реА рд▓рд┐рдЦреЗрдВ рдЬреЛ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ Person
рд╕рднреА рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдИрдореЗрд▓ рдкрддреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддреА рд╣реИ ред+
| Id | Email |
+
| 1 | a@b.com |
| 2 | c@d.com |
| 3 | a@b.com |
+
In рдирд┐рд░реНрдгрдп A: рдЙрдкрд╢рдо COUNT
рдореЗрдВ
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдПрдХ рдЙрдкрд╢реНрд░реЗрдгреА рдмрдирд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдкрддреЗ рдХреА рдШрдЯрдирд╛ рдХреА рдЖрд╡реГрддреНрддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред рддрдм рдЙрдкрд╢реНрд░реЗрдгреА рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛ рдкрд░рд┐рдгрд╛рдо рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ WHERE count > 1
ред рдХреНрд╡реЗрд░реА рдПрдХ рдмрд╛рд░ рд╕реЗ рдЕрдзрд┐рдХ рд╕реНрд░реЛрдд рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкрд╛рдП рдЧрдП рдкрддреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд▓реМрдЯрд╛рдПрдЧреАредSELECT Email
FROM (
SELECT Email, count(Email) AS count
FROM Person
GROUP BY Email
) as email_count
WHERE count > 1
тЦН рд╕рдорд╛рдзрд╛рди рдмреА: тАЛтАЛрдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ HAVING
HAVING
: рдпрд╣ рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдПрдХ рдирд┐рд░реНрджреЗрд╢ рдХреЗ WHERE
рд╕рд╛рде рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ GROUP BY
ред
SELECT Email
FROM Person
GROUP BY Email
HAVING count(Email) > 1
рдкреНрд░рд╢реНрди рд╕рдВрдЦреНрдпрд╛ 3: рдмрдврд╝рддрд╛ рддрд╛рдкрдорд╛рди
рдПрдХ SQL рдХреНрд╡реЗрд░реА рд▓рд┐рдЦреЗрдВ рдЬреЛ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ Weather
рд╕рднреА рддрд┐рдерд┐рдпреЛрдВ (рддрд┐рдерд┐ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ) рдХреЛ рдЦреЛрдЬрддреА рд╣реИ рдЬрдм рддрд╛рдкрдорд╛рди рдкреВрд░реНрд╡рд╡рд░реНрддреА рддрд╛рд░реАрдЦреЛрдВ рдХреЗ рддрд╛рдкрдорд╛рди рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛрдЧрд╛ред рдпрд╣реА рд╣реИ, рд╣рдо рдЙрди рддрд╛рд░реАрдЦреЛрдВ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рдЬрд┐рди рдкрд░ "рдЖрдЬ рдХрд╛" рддрд╛рдкрдорд╛рди "рдХрд▓" тАЛтАЛрд╕реЗ рдЕрдзрд┐рдХ рд╣реИред+
| Id(INT) | RecordDate(DATE) | Temperature(INT) |
+
| 1 | 2015-01-01 | 10 |
| 2 | 2015-01-02 | 25 |
| 3 | 2015-01-03 | 20 |
| 4 | 2015-01-04 | 30 |
+
тЦНSolution: DATEDIFF
DATEDIFF
: рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рджреЛ рддрд┐рдерд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ тАЬрдЖрдЬтАЭ рдФрд░ тАЬрдХрд▓тАЭ рдХреЗ рддрд╛рдкрдорд╛рди рдХреА рдареАрдХ-рдареАрдХ рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрджрд┐ рд╣рдо рд╕рд╛рдзрд╛рд░рдг рднрд╛рд╖рд╛ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд╡реЗрд░реА рддреИрдпрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдЪрд╛рд░ рд╡реНрдпрдХреНрдд рдХрд░рддрд╛ рд╣реИ: рд╣рдореЗрдВ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЪреБрдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддрд╛рдХрд┐ рд╡реЗ рдЬрд┐рд╕ рддрд╛рд░реАрдЦ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВ, рдЙрд╕реА рддрд╛рдкрдорд╛рди рдХреЛ "рд╕рдореНрдорд╛рди рдХреЗ рд╕рд╛рде" рдХрд▓ рдХреА рддрд╛рд░реАрдЦреЛрдВ рдХреЗ рд▓рд┐рдП рддрд╛рдкрдорд╛рди рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛредSELECT DISTINCT a.Id
FROM Weather a, Weather b
WHERE a.Temperature > b.Temperature
AND DATEDIFF(a.Recorddate, b.Recorddate) = 1
рдкреНрд░рд╢реНрди рд╕рдВрдЦреНрдпрд╛ 4: рдЗрдХрд╛рдИ рдореЗрдВ рдЙрдЪреНрдЪрддрдо рд╡реЗрддрди
рддрд╛рд▓рд┐рдХрд╛ Employee
рдХрдВрдкрдиреА рдХреЗ рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреА рд╣реИред рдЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдореЗрдВ Id
рдХрд░реНрдордЪрд╛рд░реА рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ ( ), рдЙрд╕рдХреЗ рдирд╛рдо ( Name
), рд╡реЗрддрди ( Salary
), рдФрд░ рдХрдВрдкрдиреА рдХреЗ рд╡рд┐рднрд╛рдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИ рдЬрд╣рд╛рдБ рд╡рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ ( Department
)ред+
| Id | Name | Salary | DepartmentId |
+
| 1 | Joe | 70000 | 1 |
| 2 | Jim | 90000 | 1 |
| 3 | Henry | 80000 | 2 |
| 4 | Sam | 60000 | 2 |
| 5 | Max | 90000 | 1 |
+
рддрд╛рд▓рд┐рдХрд╛ Department
рдореЗрдВ рдХрдВрдкрдиреА рдХреЗ рд╡рд┐рднрд╛рдЬрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реИред+
| Id | Name |
+
| 1 | IT |
| 2 | Sales |
+
рдЕрдзрд┐рдХрддрдо рд╡реЗрддрди рд╡рд╛рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рднрд╛рдЧ рдореЗрдВ рдорд┐рд▓рдиреЗ рд╡рд╛рд▓реА SQL рдХреНрд╡реЗрд░реА рд▓рд┐рдЦреЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдКрдкрд░ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рдорд╛рди рдХреНрд╡реЗрд░реА рдирд┐рдореНрди рддрд╛рд▓рд┐рдХрд╛ (рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рдЖрджреЗрд╢ рдирд╣реАрдВ рдмрд╛рдд рдХрд░рддрд╛ рд╣реИ) рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреА рдкрд░рд┐рдгрд╛рдо рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:+
| Department | Employee | Salary |
+
| IT | Max | 90000 |
| IT | Jim | 90000 |
| Sales | Henry | 80000 |
+
тЦНSolution: рдЯреАрдо IN
рдХрдорд╛рдВрдб IN
рдЖрдкрдХреЛ рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ WHERE
рд╢рд░реНрддреЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдХрдИ рдХрдорд╛рдВрдб рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИ OR
ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЛ рдирд┐рд░реНрдорд╛рдг рд╕рдорд╛рди рд╣реИрдВ:WHERE country = тАШCanadaтАЩ OR country = тАШUSAтАЩ
WHERE country IN (тАШCanadaтАЩ, тАЩUSAтАЩ).
рдпрд╣рд╛рдВ рд╣рдо рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рднрд╛рдЧ Department
рдХрд╛ рдирд╛рдо ( ), рдХрд░реНрдордЪрд╛рд░реА рдХрд╛ рдирд╛рдо ( Employee
) рдФрд░ рдЙрд╕рдХрд╛ рд╡реЗрддрди ( Salary
) рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдЗрдХрд╛рдИ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ (рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╢рд╛рдорд┐рд▓ рдмрдирд╛рдиреЗ DepartmentID
) рдФрд░ рдЗрд╕ рдЗрдХрд╛рдИ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХрддрдо рд╡реЗрддрдиред рдлрд┐рд░ рд╣рдо рджреЛрдиреЛрдВ рдХреЛ рдПрдХ рд╕реНрдерд┐рддрд┐ рддрд╛рд▓рд┐рдХрд╛ рдкрд░ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдкрд░рд┐рдгрд╛рдореА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЗрд╡рд▓ рддрднреА рдЧрд┐рд░рддреА рд╣реИ рдЬрдм DepartmentID
рдФрд░ Salary
рдкрд╣рд▓реЗ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдмрдирд╛рдИ рдЧрдИ рд╣реЛредSELECT
Department.name AS 'Department',
Employee.name AS 'Employee',
Salary
FROM Employee
INNER JOIN Department ON Employee.DepartmentId = Department.Id
WHERE (DepartmentId , Salary)
IN
( SELECT
DepartmentId, MAX(Salary)
FROM
Employee
GROUP BY DepartmentId
)
рдкреНрд░рд╢реНрди рдирдВрдмрд░ 5: рдЫрд╛рддреНрд░реЛрдВ рдХреЛ рдЯреНрд░рд╛рдВрд╕рдкреНрд▓рд╛рдВрдЯ рдХрд░рдирд╛
рдореИрд░реА рдПрдХ рд╣рд╛рдИ рд╕реНрдХреВрд▓ рдЯреАрдЪрд░ рд╣реИрдВред рдЙрд╕рдХреЗ рдкрд╛рд╕ рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рд╣реИ seat
рдЬреЛ рдЫрд╛рддреНрд░реЛрдВ рдХреЗ рдирд╛рдо рдФрд░ рдХрдХреНрд╖рд╛ рдореЗрдВ рдЙрдирдХреЗ рд╕реНрдерд╛рдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреА рд╣реИред рдореВрд▓реНрдп id
рдЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд▓рдЧрд╛рддрд╛рд░ рдмрдврд╝ рд░рд╣реА рд╣реИред рдореИрд░реА рдкрдбрд╝реЛрд╕реА рдЫрд╛рддреНрд░реЛрдВ рдХреЛ рд╕реНрд╡реИрдк рдХрд░рдирд╛ рдЪрд╛рд╣рддреА рд╣реИрдВредрдпрд╣рд╛рдВ рдЫрд╛рддреНрд░реЛрдВ рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреНрд▓реЗрд╕рдореЗрдВрдЯ рдХреА рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рд╣реИ:+
| id | student |
+
| 1 | Abbot |
| 2 | Doris |
| 3 | Emerson |
| 4 | Green |
| 5 | Jeames |
+
рдкрдбрд╝реЛрд╕реА рдЫрд╛рддреНрд░реЛрдВ рдХреЛ рдЯреНрд░рд╛рдВрд╕рдкреНрд▓рд╛рдВрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдХреНрдпрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:+
| id | student |
+
| 1 | Doris |
| 2 | Abbot |
| 3 | Green |
| 4 | Emerson |
| 5 | Jeames |
+
рдПрдХ рдЕрдиреБрд░реЛрдз рд▓рд┐рдЦреЗрдВ рдЬреЛ рд╢рд┐рдХреНрд╖рдХ рдХреЛ рдЙрдкрд░реЛрдХреНрдд рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛редрдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрджрд┐ рдЫрд╛рддреНрд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╡рд┐рд╖рдо рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЕрдВрддрд┐рдо рдЫрд╛рддреНрд░ рдХреЛ рдХрд╣реАрдВ рднреА рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИредUsingSolution: рдПрдХ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ WHEN
SQL рдирд┐рд░реНрдорд╛рдг CASE WHEN THEN
рдХреЛ if
рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рдПрдХ рдСрдкрд░реЗрдЯрд░ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИредрд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкрд╣рд▓реЗ рдСрдкрд░реЗрдЯрд░ рдХрд╛ WHEN
рдЙрдкрдпреЛрдЧ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╡рд┐рд╖рдо рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ рдХреЛ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рд▓рд╛рдЗрди рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдЕрдзреАрди рдирд╣реАрдВ рд╣реИред рджреВрд╕рд░рд╛ рдСрдкрд░реЗрдЯрд░ WHEN
рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рд╖рдо рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдореЗрдВ 1 рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 1, 3, 5 2, 4, 6 рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ) рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рднреА рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ (1, 4, 6 рдХреЛ 1, 3, 5) рдореЗрдВ рд╕реЗ рдШрдЯрд╛рдХрд░ 1 рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПредSELECT
CASE
WHEN((SELECT MAX(id) FROM seat)%2 = 1) AND id = (SELECT MAX(id) FROM seat) THEN id
WHEN id%2 = 1 THEN id + 1
ELSE id - 1
END AS id, student
FROM seat
ORDER BY id
рд╕рд╛рд░рд╛рдВрд╢
рд╣рдордиреЗ рдХрдИ рдПрд╕рдХреНрдпреВрдПрд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХреА, рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдПрд╕рдХреНрдпреВрдПрд▓ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛ рд╕рдХрдиреЗ рд╡рд╛рд▓реЗ рдХреБрдЫ рдЙрдиреНрдирдд рдЯреВрд▓ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреАред рд╣рдо рдЖрд╢рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдиреЗ рдЖрдЬ рдЬреЛ рд╕реАрдЦрд╛ рд╣реИ рд╡рд╣ SQL рдореЗрдВ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдХреЗ рджреМрд░рд╛рди рдХрд╛рдо рдЖрдПрдЧрд╛ рдФрд░ рд░реЛрдЬрдорд░реНрд░рд╛ рдХреЗ рдХрд╛рдо рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╕рд╛рдмрд┐рдд рд╣реЛрдЧрд╛редPS рд╣рдорд╛рд░реЗ рдорд╛рд░реНрдХреЗрдЯрдкреНрд▓реЗрд╕ рдореЗрдВ SQL Server Express рдХреЗ рд╕рд╛рде рдПрдХ рдбреЙрдХрд░ рдЗрдореЗрдЬ рд╣реИ, рдЬреЛ рдПрдХ рдХреНрд▓рд┐рдХ рдореЗрдВ рдЗрдВрд╕реНрдЯреЙрд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИред рдЖрдк рд╡реАрдкреАрдПрд╕ рдкрд░ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рднреА рдирдП рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП 3 рджрд┐рди рдореБрдлреНрдд рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВредрдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВ! рдЖрдк рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рдХреНрдпрд╛ рд╕рд▓рд╛рд╣ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ SQL рдХреНрд╡реЗрд░реА рдмрдирд╛рдиреЗ рдХреА рдХрд▓рд╛ рдореЗрдВ рдорд╣рд╛рд░рдд рд╣рд╛рд╕рд┐рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?