20240225 SQL

μ§‘κ³„ν•¨μˆ˜

λ°μ΄ν„°μ˜ 수, κ°’λ“€μ˜ 합계, 평균, μ΅œλŒ“κ°’, μ΅œμ†Ÿκ°’μ„ κ΅¬ν•˜λŠ” ν•¨μˆ˜.

μ’…λ₯˜

  • count(ν•„λ“œλͺ…) : λ°μ΄ν„°μ˜ 개수λ₯Ό ν‘œμ‹œ(값이 null인 경우 ν¬ν•¨ν•˜μ§€ μ•ŠμŒ)
  • count(*) : λ°μ΄ν„°μ˜ 개수λ₯Ό ν‘œμ‹œ(null 포함)
  • sum(ν•„λ“œλͺ…) : ν•„λ“œμ˜ κ°’μ˜ 합계λ₯Ό ν‘œμ‹œ
  • avg(ν•„λ“œλͺ…) : ν•„λ“œμ˜ κ°’μ˜ 평균을 ν‘œμ‹œ
  • max(ν•„λ“œλͺ…) : ν•„λ“œμ˜ κ°’μ˜ μ΅œλŒ“κ°’μ„ ν‘œμ‹œ
  • min(ν•„λ“œλͺ…) : ν•„λ“œμ˜ κ°’μ˜ μ΅œμ†Ÿκ°’μ„ ν‘œμ‹œ

풀어보기 : μ—¬λŸ¬ μ’…λ₯˜μ˜ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄κ°€ 있고, ν•œ μ‚¬λžŒλ‹Ή 제일 μž˜ν•˜λŠ” ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄κ°€ 있음. λ‹€λ₯Έ μ’…λ₯˜μ˜ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λ₯Ό μž˜ν•˜λŠ” μ‚¬λžŒλ“€λΌλ¦¬ ν•œ 쑰둜 묢을 λ•Œ, κ°€λŠ₯ν•œ 쑰의 개수 κ΅¬ν•˜κΈ°.
ν…Œμ΄λΈ”μ€ ν•„λ“œ 2개둜 μ΄λ£¨μ–΄μ ΈμžˆμŒ. μ‚¬λžŒ ꡬ별 κ°€λŠ₯ν•œ 고유 λ²ˆν˜Έμ™€ κ·Έ μ‚¬λžŒμ΄ μž˜ν•˜λŠ” ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄κ°€ 무엇인지.

  • μ‹€νŒ¨ν•œ 방법
    μ„œλΈŒ 쿼리λ₯Ό μ‚¬μš©ν•΄μ„œ count()ν•œ κ±°λ₯Ό λ‹€μ‹œ min()ν•˜λ €κ³  ν–ˆλŠ”λ° μ‹€νŒ¨ν•˜λŠ” 쀑.
    SELECT min(CNT) FROM (SELECT count(κΆκΈˆν•œ ν•„λ“œλͺ…) as CNT FROM ν…Œμ΄λΈ”λͺ… GROUP BY κΆκΈˆν•œ ν•„λ“œλͺ…)
    

++ μ—λŸ¬ λ°œμƒ 이유 찾음! μ—λŸ¬λŠ” Every derived table must have its own alias μ΄μ—ˆλŠ”λ°, μ—λŸ¬κ°€ λ°œμƒν•œ μ΄μœ λŠ” μ„œλΈŒμΏΌλ¦¬μ— alias(이름)κ°€ μ§€μ •λ˜μ§€ μ•Šμ•„μ„œμ˜€λ‹€. λ”°λΌμ„œ μ„œλΈŒμΏΌλ¦¬ κ΄„ν˜Έ λ‹«κ³  κ·Έ 뒀에 μ„œλΈŒμΏΌλ¦¬μ— 이름을 μ§€μ •ν•΄μ£Όλ©΄ 됨.

SELECT min(temp) as CNT FROM (SELECT count(κΆκΈˆν•œ ν•„λ“œλͺ…) as temp FROM ν…Œμ΄λΈ”λͺ… GROUP BY κΆκΈˆν•œ ν•„λ“œλͺ…) new_table
  • μš°μ„  ν•΄κ²°ν•œ 방법
    SELECT count(κΆκΈˆν•œ ν•„λ“œλͺ…) as CNT FROM ν…Œμ΄λΈ”λͺ… GROUP BY κΆκΈˆν•œ ν•„λ“œλͺ… ORDER BY count(κΆκΈˆν•œ ν•„λ“œλͺ…) asc limit 1
    

    GROUP BYλ₯Ό μ‚¬μš©ν•˜λ©΄ ORDER BYλ₯Ό μ‚¬μš©ν•˜μ§€ λͺ»ν•œλ‹€κ³  μƒκ°ν–ˆλŠ”λ° μ‚¬μš©ν•  수 있고 SELECTν•  κ²ƒμœΌλ‘œ μ§‘κ³„ν•¨μˆ˜λ₯Ό μ‚¬μš©ν–ˆμœΌλ©΄ ORDER BY λ‹€μŒμ—λ„ κ·ΈλŒ€λ‘œ μ§‘κ³„ν•¨μˆ˜ μ‚¬μš©ν•΄μ€˜μ•Ό ORDER BY μ‚¬μš©ν•  수 있음.

++ ORDER BYλ₯Ό μ‚¬μš©ν•˜μ§€ λͺ»ν•˜λŠ”κ±΄ μ„œλΈŒμΏΌλ¦¬.

Categories:

Updated:

Leave a comment