CodeGym/Java Course/All lectures for HI purposes/рдЙрдиреНрдирдд рд╕рдореВрд╣рди

рдЙрдиреНрдирдд рд╕рдореВрд╣рди

рдЙрдкрд▓рдмреНрдз

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. рдЪрд░рдг 1 - рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд▓рд╛рдирд╛
    • рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдирд┐рд░реНрджрд┐рд╖реНрдЯ рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рд╕рднреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
    • рдлрд┐рд░ рдЙрдирдореЗрдВ рдкрд░рд┐рдХрд▓рд┐рдд рдлрд╝реАрд▓реНрдб рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВред
    • рдФрд░ рдлрд┐рд░ рд╕рднреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рд╡реЗ рд╣реА рд╢реЗрд╖ рд░рд╣ рдЬрд╛рддреЗ рд╣реИрдВ рдЬреЛ рд╢рд░реНрдд рдХреЛ рдкреВрд░рд╛ рдХрд░рддреЗ рд╣реИрдВWHERE
  2. рд╕реНрдЯреЗрдЬ 2 - рдЧреНрд░реБрдкрд┐рдВрдЧ
    • рдЗрд╕рдХреЗ рдмрд╛рдж рдЧреНрд░реБрдкрд┐рдВрдЧ рдХреЛ рдкрд░рд┐рдгрд╛рдореЛрдВ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
    • рд╕рдореВрд╣реАрдХрд░рдг рдХреЗ рджреМрд░рд╛рди, рдлрд╝реАрд▓реНрдб рдЬреИрд╕реЗ COUNT(*).
    • рдЕрдВрдд рдореЗрдВ, рд╕рдореВрд╣реАрдХрд░рдг рдкрд░рд┐рдгрд╛рдо рдкрд░ рдПрдХ рдлрд╝рд┐рд▓реНрдЯрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ HAVINGред
  3. рд╕реНрдЯреЗрдЬ 3 - рдЫрдБрдЯрд╛рдИ
    • рдкрд┐рдЫрд▓реЗ рдЪрд░рдгреЛрдВ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрд░рдордмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ORDER BYред

рдЕрдВрдд рдореЗрдВ, рдкрд░рд┐рдгрд╛рдо рдХреЛ LIMITрдФрд░ рдХреЗ рд╕рд╛рде рдЯреНрд░рд┐рдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ OFFSETред

рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ
  • рд▓реЛрдХрдкреНрд░рд┐рдп
  • рдирдпрд╛
  • рдкреБрд░рд╛рдирд╛
рдЯрд┐рдкреНрдкрдгреА рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд╕рд╛рдЗрди рдЗрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛
рдЗрд╕ рдкреЗрдЬ рдкрд░ рдЕрднреА рддрдХ рдХреЛрдИ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рдирд╣реАрдВ рд╣реИрдВ