Post

๐ŸŒธ [solvesql] DVD ๋Œ€์—ฌ์  ์šฐ์ˆ˜ ๊ณ ๊ฐ ์ฐพ๊ธฐ (MySQL)

solvesql 'DVD ๋Œ€์—ฌ์  ์šฐ์ˆ˜ ๊ณ ๊ฐ ์ฐพ๊ธฐ' MySQL ํ’€์ด

๐ŸŒธ [solvesql] DVD ๋Œ€์—ฌ์  ์šฐ์ˆ˜ ๊ณ ๊ฐ ์ฐพ๊ธฐ (MySQL)


๐Ÿ‘‰ solvesql - DVD ๋Œ€์—ฌ์  ์šฐ์ˆ˜ ๊ณ ๊ฐ ์ฐพ๊ธฐ


๐Ÿ“Œ ๋ฌธ์ œ ์š”์•ฝ

ํ˜„์žฌ ์œ ํšจ ๊ณ ๊ฐ ์ค‘ DVD ๋Œ€์—ฌ ํšŸ์ˆ˜๊ฐ€ 35ํšŒ ์ด์ƒ์ธ ์šฐ์ˆ˜ ๊ณ ๊ฐ์˜ ID๋ฅผ ์กฐํšŒํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค.

  • ์กฐ๊ฑด
    • ํ˜„์žฌ ์œ ํšจ ๊ณ ๊ฐ๋งŒ ์กฐํšŒ ๋Œ€์ƒ์— ํฌํ•จํ•œ๋‹ค.
    • ๊ณ ๊ฐ๋ณ„ DVD ๋Œ€์—ฌ ํšŸ์ˆ˜๋ฅผ ์ง‘๊ณ„ํ•œ๋‹ค.
    • ๋Œ€์—ฌ ํšŸ์ˆ˜๊ฐ€ 35ํšŒ ์ด์ƒ์ธ ๊ณ ๊ฐ๋งŒ ์กฐํšŒํ•œ๋‹ค.
    • ๊ฒฐ๊ณผ์—๋Š” ๊ณ ๊ฐ ID(customer_id)๋งŒ ์ถœ๋ ฅํ•œ๋‹ค.


โœ… ํ’€์ด

  • SELECT ๊ณ ๊ฐ id
  • FROM ๊ณ ๊ฐ ํ…Œ์ด๋ธ”, ๋Œ€์—ฌ ์ •๋ณด ํ…Œ์ด๋ธ” join
  • WHERE ์œ ํšจ ๊ณ ๊ฐ
  • GROUP BY ๊ณ ๊ฐ id
  • HAVING ๋Œ€์—ฌ ํšŸ์ˆ˜ 35ํšŒ ์ด์ƒ;

    ๐Ÿ”ฝ

  • SELECT ๊ณ ๊ฐ id
  • FROM rental JOIN customer ON customer_id
  • WHERE ์œ ํšจ๊ณ ๊ฐ์—ฌ๋ถ€ = true
  • GROUP BY ๊ณ ๊ฐ id
  • HAVING COUNT(๋Œ€์—ฌ id) >= 35;


โŒจ๏ธ SQL ์ฟผ๋ฆฌ

1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT
  c.customer_id
FROM
  rental r
  JOIN customer c 
  ON r.customer_id = c.customer_id
WHERE
  c.active = true
GROUP BY
  c.customer_id
HAVING
  COUNT(r.rental_id) >= 35;


๐Ÿ’ก ํ’€์ด ํฌ์ธํŠธ

  • JOIN์„ ์‚ฌ์šฉํ•˜๋ฉด ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์„ ์—ฐ๊ฒฐํ•˜์—ฌ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ํ•จ๊ป˜ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.
  • WHERE ์ ˆ์€ ๊ทธ๋ฃนํ™” ์ด์ „์— ํ–‰์„ ํ•„ํ„ฐ๋งํ•˜๋ฏ€๋กœ, ์œ ํšจ ๊ณ ๊ฐ๋งŒ ๋Œ€์ƒ์œผ๋กœ ์ง‘๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • GROUP BY๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ณ ๊ฐ๋ณ„๋กœ ๋Œ€์—ฌ ๋‚ด์—ญ์„ ๋ฌถ์€ ํ›„ ์ง‘๊ณ„ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • COUNT(์ปฌ๋Ÿผ)์€ NULL์„ ์ œ์™ธํ•œ ๊ฐ’์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๋ฉฐ, ํŠน์ • ์ปฌ๋Ÿผ์˜ ๊ฐœ์ˆ˜๋ฅผ ์ง‘๊ณ„ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
  • ์ง‘๊ณ„ ๊ฒฐ๊ณผ์— ์กฐ๊ฑด์„ ์ ์šฉํ•  ๋•Œ๋Š” HAVING ์ ˆ์„ ์‚ฌ์šฉํ•œ๋‹ค.


๐Ÿ“š ๋” ๋งŽ์€ solvesql ํ’€์ด

๐Ÿ‘‰ solvesql ํ’€์ด ์ „์ฒด ๋ณด๊ธฐ

This post is licensed under CC BY 4.0 by the author.