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 | рез |
2013 | рез |
2014 | рез |
2015 | 2 |
2018 | рез |
рдЖрдгрд┐ рдЖрддрд╛ рдЖрдореНрд╣реА рддреНрдпрд╛рддреВрди рдПрдХ рдХрд┐рдВрд╡рд╛ рдХрдореА рдХрд░реНрдордЪрд╛рд░реА рдХрд╛рдорд╛рд╡рд░ рдШреЗрддрд▓реЗрд▓реНрдпрд╛ рд╡рд░реНрд╖рд╛рдВрдирд╛ рд╡рдЧрд│рддреЛ. рдЙрджрд╛рд╣рд░рдг:
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
.