Post

๐ŸŒธ [solvesql] ์Šคํƒฌํ”„๋ฅผ ์ฐ์–ด๋“œ๋ ค์š” (MySQL)

solvesql '์Šคํƒฌํ”„๋ฅผ ์ฐ์–ด๋“œ๋ ค์š”' MySQL ํ’€์ด

๐ŸŒธ [solvesql] ์Šคํƒฌํ”„๋ฅผ ์ฐ์–ด๋“œ๋ ค์š” (MySQL)


๐Ÿ‘‰ solvesql - ์Šคํƒฌํ”„๋ฅผ ์ฐ์–ด๋“œ๋ ค์š”


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

์˜์ˆ˜์ฆ ๊ธˆ์•ก์— ๋”ฐ๋ผ ์ง€๊ธ‰๋˜๋Š” ์Šคํƒฌํ”„ ๊ฐœ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•œ ํ›„, ์Šคํƒฌํ”„ ๊ฐœ์ˆ˜๋ณ„ ์˜์ˆ˜์ฆ ์ˆ˜๋ฅผ ์ง‘๊ณ„ํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค.

  • ์กฐ๊ฑด
    • ์˜์ˆ˜ ๊ธˆ์•ก์ด 25๋‹ฌ๋Ÿฌ ์ด์ƒ์ด๋ฉด ์Šคํƒฌํ”„ 2๊ฐœ๋ฅผ ์ง€๊ธ‰ํ•œ๋‹ค.
    • ์˜์ˆ˜ ๊ธˆ์•ก์ด 15๋‹ฌ๋Ÿฌ ์ด์ƒ 25๋‹ฌ๋Ÿฌ ๋ฏธ๋งŒ์ด๋ฉด ์Šคํƒฌํ”„ 1๊ฐœ๋ฅผ ์ง€๊ธ‰ํ•œ๋‹ค.
    • ์˜์ˆ˜ ๊ธˆ์•ก์ด 15๋‹ฌ๋Ÿฌ ๋ฏธ๋งŒ์ด๋ฉด ์Šคํƒฌํ”„๋ฅผ ์ง€๊ธ‰ํ•˜์ง€ ์•Š๋Š”๋‹ค.
    • ์Šคํƒฌํ”„ ๊ฐœ์ˆ˜๋ณ„ ์˜์ˆ˜์ฆ ๊ฐœ์ˆ˜๋ฅผ ์ง‘๊ณ„ํ•œ๋‹ค.
    • ๊ฒฐ๊ณผ ์ปฌ๋Ÿผ๋ช…์€ stamp, count_bill๋กœ ์ง€์ •ํ•œ๋‹ค.
    • ์Šคํƒฌํ”„ ๊ฐœ์ˆ˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•œ๋‹ค.


โœ… ํ’€์ด

  • SELECT ์˜์ˆ˜ ๊ธˆ์•ก์— ๋”ฐ๋ฅธ ์Šคํƒฌํ”„ ๊ฐœ์ˆ˜, ์Šคํƒฌํ”„๋ณ„ ๊ฐœ์ˆ˜
  • FROM tips
  • GROUP BY ์Šคํƒฌํ”„ ๊ฐœ์ˆ˜
  • ORDER BY ์Šคํƒฌํ”„ ๊ฐœ์ˆ˜;

    ๐Ÿ”ฝ

  • SELECT
    • CASE
      • WHEN ์˜์ˆ˜ ๊ธˆ์•ก < 15 THEN 0
      • WHEN ์˜์ˆ˜ ๊ธˆ์•ก < 25 THEN 1
      • ELSE 2
    • END AS stamp,
    • COUNT(*) AS count_bill
  • FROM tips
  • GROUP BY stamp
  • ORDER BY stamp;


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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT
  CASE
    WHEN total_bill < 15 THEN 0
    WHEN total_bill < 25 THEN 1
    ELSE 2
  END AS stamp,
  COUNT(*) AS count_bill
FROM
  tips
GROUP BY
  stamp
ORDER BY
  stamp;


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

  • CASE ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด ์กฐ๊ฑด์— ๋”ฐ๋ผ ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์กฐํšŒ ๊ฒฐ๊ณผ์— ์ƒˆ๋กœ์šด ๊ฐ’์„ ์ƒ์„ฑํ•  ๋•Œ ์ž์ฃผ ์‚ฌ์šฉ๋œ๋‹ค.
  • CASE ๋ฌธ์€ ์กฐ๊ฑด์„ ์œ„์—์„œ๋ถ€ํ„ฐ ์ˆœ์ฐจ์ ์œผ๋กœ ๊ฒ€์‚ฌํ•˜๋ฏ€๋กœ, ๋ฒ”์œ„ ์กฐ๊ฑด์„ ์ž‘์„ฑํ•  ๋•Œ๋Š” ์กฐ๊ฑด์˜ ์ˆœ์„œ๋ฅผ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค.
  • GROUP BY์—๋Š” CASE ๋ฌธ์˜ ๊ฒฐ๊ณผ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋™์ผํ•œ ์Šคํƒฌํ”„ ๊ฐœ์ˆ˜๋ฅผ ๊ฐ€์ง„ ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜์˜ ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์„ ์ˆ˜ ์žˆ๋‹ค.
  • COUNT(*)๋Š” ๊ฐ ๊ทธ๋ฃน์— ํฌํ•จ๋œ ํ–‰์˜ ๊ฐœ์ˆ˜๋ฅผ ์ง‘๊ณ„ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
  • ORDER BY๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ง‘๊ณ„ ๊ฒฐ๊ณผ๋ฅผ ์›ํ•˜๋Š” ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ๋‹ค.
  • MySQL์—์„œ๋Š” SELECT ์ ˆ์—์„œ ์ •์˜ํ•œ ๋ณ„์นญ(stamp)์„ GROUP BY์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ํ•˜์ง€๋งŒ ์ผ๋ถ€ DBMS์—์„œ๋Š” GROUP BY์—์„œ SELECT ๋ณ„์นญ์„ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์—, CASE ๋ฌธ์„ GROUP BY์— ๋‹ค์‹œ ์ž‘์„ฑํ•˜๊ฑฐ๋‚˜ CTE/์„œ๋ธŒ์ฟผ๋ฆฌ๋กœ ๋จผ์ € ๊ณ„์‚ฐํ•œ ๋’ค ์ง‘๊ณ„ํ•ด์•ผ ํ•œ๋‹ค.

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

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

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