5.1 рдХрдерди рд╣реЛрдирд╛
SQL рдореЗрдВ рдПрдХ рдФрд░ рдЙрдкрдпреЛрдЧреА рдСрдкрд░реЗрдЯрд░ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ GROUP BY
, рдЗрд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ HAVING
ред
рдЕрдкрдиреЗ рдЕрд░реНрде рдореЗрдВ, рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдСрдкрд░реЗрдЯрд░ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИ WHERE
ред рдпрд╣ рдЖрдкрдХреЛ рд╕рдореВрд╣реАрдХрд░рдг рд╕реЗ рдкрд╣рд▓реЗ рдХреЗрд╡рд▓ WHERE
рдПрдХ рдкрдВрдХреНрддрд┐ рдлрд╝рд┐рд▓реНрдЯрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдФрд░ рд╕рд╣рд╛рдпрддрд╛ рд╕реЗ HAVING
рдЖрдк рдПрдХ рдлрд╝рд┐рд▓реНрдЯрд░ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╕рдореВрд╣реАрдХрд░рдг рдХреЗ рдмрд╛рдж рд░рд┐рдХреЙрд░реНрдб рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред
рдЧреНрд░реБрдкрд┐рдВрдЧ рдФрд░ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдЧреНрд░реБрдкрд┐рдВрдЧ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдХреНрд╡реЗрд░реА рдХрд╛ рд╕рд╛рдорд╛рдиреНрдп рджреГрд╢реНрдп рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
SELECT columns
FROM table
WHERE condition
GROUP BY columns
HAVING condition
HAVING
рдХреЗрд╡рд▓ рддрднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдЕрдиреБрд░реЛрдз рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛ GROUP BY
ред
рдЖрдЗрдП рдПрдХ рдкреНрд░рд╢реНрди рд▓рд┐рдЦреЗрдВ рдЬрд╣рд╛рдВ рд╣рдо рд╕рд╛рд▓ рдХреЗ рд╣рд┐рд╕рд╛рдм рд╕реЗ рдХрд╛рдо рдкрд░ рд░рдЦреЗ рдЧрдП рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
SELECT
YEAR(join_date) AS hire_year,
COUNT(*) AS total
FROM employee
GROUP BY hire_year
рдФрд░ рдЗрд╕ рдкреНрд░рд╢реНрди рдХрд╛ рдкрд░рд┐рдгрд╛рдо:
рдХрд┐рд░рд╛рдпрд╛_рд╡рд░реНрд╖ | рдХреБрд▓ |
---|---|
2012 | 1 |
2013 | 1 |
2014 | 1 |
2015 | 2 |
2018 | 1 |
рдФрд░ рдЕрдм рд╣рдо рдЗрд╕реЗ рдЙрди рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдмрд╛рд╣рд░ рдХрд░ рджреЗрддреЗ рд╣реИрдВ рдЬрдм рдПрдХ рдпрд╛ рдХрдо рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЛ рдХрд╛рдо рдкрд░ рд░рдЦрд╛ рдЧрдпрд╛ рдерд╛ред рдЙрджрд╛рд╣рд░рдг:
SELECT
YEAR(join_date) AS hire_year,
COUNT(*) AS total
FROM employee
GROUP BY hire_year
HAVING total > 1
рдФрд░ рдЗрд╕ рдкреНрд░рд╢реНрди рдХрд╛ рдкрд░рд┐рдгрд╛рдо:
рдХрд┐рд░рд╛рдпрд╛_рд╡рд░реНрд╖ | рдХреБрд▓ |
---|---|
2015 | 2 |
5.3 рдмрдпрд╛рдиреЛрдВ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдХреНрд░рдо
рд╕рд╣реА рдФрд░ рдХреБрд╢рд▓ SQL рдХреНрд╡реЗрд░реА рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ SQL рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рдЦреНрддреА рд╕реЗ рд╡рд┐рдирд┐рдпрдорд┐рдд рд╣реИ рдФрд░ рдЖрдкрдХреА рдЗрдЪреНрдЫрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рдХрд░рддреА рд╣реИред рдЖрдк рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рдкреБрдирд░реНрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдЕрд▓рдЧ рдЖрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕ рдХреНрд░рдо рдореЗрдВ SQL рдХреНрд╡реЗрд░реА рдХреЛ рдХрдИ рдЪрд░рдгреЛрдВ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдЪрд░рдг 1 - рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд▓рд╛рдирд╛
- рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдирд┐рд░реНрджрд┐рд╖реНрдЯ рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рд╕рднреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдлрд┐рд░ рдЙрдирдореЗрдВ рдкрд░рд┐рдХрд▓рд┐рдд рдлрд╝реАрд▓реНрдб рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВред
- рдФрд░ рдлрд┐рд░ рд╕рднреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рд╡реЗ рд╣реА рд╢реЗрд╖ рд░рд╣ рдЬрд╛рддреЗ рд╣реИрдВ рдЬреЛ рд╢рд░реНрдд рдХреЛ рдкреВрд░рд╛ рдХрд░рддреЗ рд╣реИрдВ
WHERE
- рд╕реНрдЯреЗрдЬ 2 - рдЧреНрд░реБрдкрд┐рдВрдЧ
- рдЗрд╕рдХреЗ рдмрд╛рдж рдЧреНрд░реБрдкрд┐рдВрдЧ рдХреЛ рдкрд░рд┐рдгрд╛рдореЛрдВ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рд╕рдореВрд╣реАрдХрд░рдг рдХреЗ рджреМрд░рд╛рди, рдлрд╝реАрд▓реНрдб рдЬреИрд╕реЗ
COUNT(*)
. - рдЕрдВрдд рдореЗрдВ, рд╕рдореВрд╣реАрдХрд░рдг рдкрд░рд┐рдгрд╛рдо рдкрд░ рдПрдХ рдлрд╝рд┐рд▓реНрдЯрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
HAVING
ред - рд╕реНрдЯреЗрдЬ 3 - рдЫрдБрдЯрд╛рдИ
- рдкрд┐рдЫрд▓реЗ рдЪрд░рдгреЛрдВ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрд░рдордмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
ORDER BY
ред
рдЕрдВрдд рдореЗрдВ, рдкрд░рд┐рдгрд╛рдо рдХреЛ LIMIT
рдФрд░ рдХреЗ рд╕рд╛рде рдЯреНрд░рд┐рдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ OFFSET
ред