Home > Archive > SQL_archive > πŸ’‰[SQL] GROUP BY

πŸ’‰[SQL] GROUP BY
SQL

GROUP BY

β€˜GROUP BY’ μ ˆμ€ SQLμ—μ„œ νŠΉμ • μ—΄(λ“€)의 값에 κΈ°λ°˜ν•˜μ—¬ ν–‰(row)듀을 κ·Έλ£Ήν™”ν•  λ•Œ μ‚¬μš©λ©λ‹ˆλ‹€.

  • 이 κΈ°λŠ₯은 μ§‘κ³„ν•¨μˆ˜(β€˜SUM’, β€˜AVG’, β€˜COUNT’, β€˜MIN’, β€˜MAX’ λ“±)와 함꼐 μ‚¬μš©λ˜μ–΄, 각 그룹에 λŒ€ν•œ μ§‘κ³„λœ 데이터λ₯Ό κ³„μ‚°ν•˜κ³  λ°˜ν™˜ν•˜λŠ” 데 주둜 ν™œμš©λ©λ‹ˆλ‹€.
  • β€˜GROUP BY’ λŠ” 데이터λ₯Ό μš”μ•½ν•˜κ³ , νŠΉμ • 기쀀에 λ”°λ₯Έ λ°μ΄ν„°μ˜ 톡계λ₯Ό 뢄석할 λ•Œ μœ μš©ν•˜κ²Œ μ‚¬μš©λ©λ‹ˆλ‹€.

β€˜GROUP BY’ μ‚¬μš© 예

  • 그룹별 합계 계산: 각 λΆ€μ„œλ³„ 총 κΈ‰μ—¬λ₯Ό κ³„μ‚°ν•˜κ³  싢을 λ•Œ
    SELECT department, SUM(salary) FROM employees GROUP BY departmentl
    

    이 μΏΌλ¦¬λŠ” β€˜employees’ ν…Œμ΄λΈ”μ—μ„œ β€˜department’ λ³„λ‘œ κ·Έλ£Ήν™”ν•˜κ³ , 각 그룹의 β€˜salary’ 합계λ₯Ό κ³„μ‚°ν•©λ‹ˆλ‹€.

  • 그룹별 평균 계산: 각 μ œν’ˆ μΉ΄ν…Œκ³ λ¦¬λ³„ 평균 가격을 κ³„μ‚°ν•˜κ³  싢을 λ•Œ
    SELECT category, AVG(price) FROM products GROUP BY category;
    

    이 μΏΌλ¦¬λŠ” β€˜product’ ν…Œμ΄λΈ”μ—μ„œ β€˜category’ λ³„λ‘œ κ·Έλ£Ήν™”ν•˜κ³ , 각 그룹의 price 평균을 κ³„μ‚°ν•©λ‹ˆλ‹€.

  • 그룹별 데이터 수 계산: 각 λΆ€μ„œμ— μ†ν•œ 직원 수λ₯Ό μ„Έκ³  싢을 λ•Œ
    SELECT department, COUNT(*) FROM employees GROUP BY department;
    

    이 μΏΌλ¦¬λŠ” β€˜employees’ ν…Œμ΄λΈ”μ—μ„œ β€˜department’ λ³„λ‘œ κ·Έλ£Ήν™”ν•˜κ³ , 각 그룹의 직원 수λ₯Ό μ„Έμ–΄ λ°˜ν™˜ν•©λ‹ˆλ‹€.

β€˜GROUP BY’ 절의 νŠΉμ§•

  • 데이터λ₯Ό κ·Έλ£Ήν™”ν•˜κ³  각 그룹에 λŒ€ν•œ 집계λ₯Ό μˆ˜ν–‰ν•˜μ—¬, λ°μ΄ν„°μ˜ μš”μ•½ 정보λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.
  • μ—¬λŸ¬ 열을 κΈ°μ€€μœΌλ‘œ κ·Έλ£Ήν™”ν•  수 있으며, 이 경우 μ„ νƒλœ λͺ¨λ“  μ—΄μ˜ 쑰합에 따라 데이터가 κ·Έλ£Ήν™”λ©λ‹ˆλ‹€.
  • 집계 ν•¨μˆ˜μ™€ ν•¨κ»˜ μ‚¬μš©λ˜μ–΄, 각 κ·Έλ£Ήλ³„λ‘œ 함계, 평균, μ΅œμ†Œκ°’, μ΅œλŒ€κ°’ 등을 계산할 수 μžˆμŠ΅λ‹ˆλ‹€.
  • β€˜HAVING’ 절과 ν•¨κ»˜ μ‚¬μš©ν•˜μ—¬, 집계 결과에 λŒ€ν•œ 쑰건을 μ„€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” β€˜WHERE’ 절과 μœ μ‚¬ν•˜μ§€λ§Œ, β€˜GROUP BY’ 둜 κ·Έλ£Ήν™”λœ 결과에 λŒ€ν•΄ 쑰건을 μ •μš©ν•˜λŠ” 점이 λ‹€λ¦…λ‹ˆλ‹€.

μ‚¬μš© μ‹œ 고렀사항

  • β€˜GROUP BY’ λ₯Ό μ‚¬μš©ν•  λ•ŒλŠ” μ„ νƒλœ 열이 β€˜SELECT’ μ ˆμ— ν¬ν•¨λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€. κ·Έλ ‡μ§€ μ•Šμ€ 경우, SQL 쿼리가 μ˜ˆμƒλŒ€λ‘œ μž‘λ™ν•˜μ§€ μ•Šμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.
  • λŒ€κ·œλͺ¨ λ°μ΄ν„°μ…‹μ—μ„œ β€˜GROUP BY’ λ₯Ό μ‚¬μš©ν•  λ•ŒλŠ” 쿼리의 μ„±λŠ₯을 κ³ λ €ν•΄μ•Ό ν•©λ‹ˆλ‹€. μ μ ˆν•œ 인덱슀 μ‚¬μš©κ³Ό 데이터 ꡬ쑰의 μ΅œμ ν™”κ°€ μ„±λŠ₯에 큰 μ˜ν–«μ„ λ―ΈμΉ  수 μžˆμŠ΅λ‹ˆλ‹€.

β€˜GROUP BY’ μ ˆμ€ 데이터λ₯Ό λΆ„μ„ν•˜κ³  μš”μ•½ 정보λ₯Ό μ–»κΈ° μœ„ν•œ κ°•λ ₯ν•œ λ„κ΅¬λ‘œ, λ°μ΄ν„°λ² μ΄μŠ€ λ‚΄μ—μ„œ 의미 μžˆλŠ” μΈμ‚¬μ΄νŠΈλ₯Ό λ„μΆœν•˜λŠ” 데 크게 κΈ°μ—¬ν•©λ‹ˆλ‹€.