๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค/์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ’€์ด(SQL)

์นดํ…Œ๊ณ ๋ฆฌ ๋ณ„ ์ƒํ’ˆ ๊ฐœ์ˆ˜ ๊ตฌํ•˜๊ธฐ

by carrot0911 2024. 11. 8.

๋ฌธ์ œ ์„ค๋ช…

https://school.programmers.co.kr/learn/courses/30/lessons/131529

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก, ์ฑ„์šฉ๊นŒ์ง€ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr

๋‹ค์Œ์€ ์–ด๋Š ์˜๋ฅ˜ ์‡ผํ•‘๋ชฐ์—์„œ ํŒ๋งค ์ค‘์ธ ์ƒํ’ˆ๋“ค์˜ ์ •๋ณด๋ฅผ ๋‹ด์€ PRODUCT ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค. PRODUCT ํ…Œ์ด๋ธ”์€ ์•„๋ž˜์™€ ๊ฐ™์€ ๊ตฌ์กฐ๋กœ ๋˜์–ด์žˆ์œผ๋ฉฐ, PRODUCT_IDPRODUCT_CODEPRICE๋Š” ๊ฐ๊ฐ ์ƒํ’ˆ ID, ์ƒํ’ˆ์ฝ”๋“œ, ํŒ๋งค๊ฐ€๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

Column name Type Nullable
PRODUCT_ID INTEGER FALSE
PRODUCT_CODE VARCHAR(8) FALSE
PRICE INTEGER FALSE

์ƒํ’ˆ ๋ณ„๋กœ ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” 8์ž๋ฆฌ ์ƒํ’ˆ์ฝ”๋“œ ๊ฐ’์„ ๊ฐ€์ง€๋ฉฐ, ์•ž 2์ž๋ฆฌ๋Š” ์นดํ…Œ๊ณ ๋ฆฌ ์ฝ”๋“œ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ

PRODUCT ํ…Œ์ด๋ธ”์—์„œ ์ƒํ’ˆ ์นดํ…Œ๊ณ ๋ฆฌ ์ฝ”๋“œ(PRODUCT_CODE ์•ž 2์ž๋ฆฌ) ๋ณ„ ์ƒํ’ˆ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑํ•ด ์ฃผ์„ธ์š”. ๊ฒฐ๊ณผ๋Š” ์ƒํ’ˆ ์นดํ…Œ๊ณ ๋ฆฌ ์ฝ”๋“œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•ด ์ฃผ์„ธ์š”.

์˜ˆ์‹œ

์˜ˆ๋ฅผ ๋“ค์–ด PRODUCT ํ…Œ์ด๋ธ”์ด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค๋ฉด

PRODUCT_ID PRODUCT_CODE PRICE
1 A1000011 10000
2 A1000045 9000
3 C3000002 22000
4 C3000006 15000
5 C3000010 30000
6 K1000023 17000

์ƒํ’ˆ ์นดํ…Œ๊ณ ๋ฆฌ ์ฝ”๋“œ ๋ณ„ ์ƒํ’ˆ์€ ์•„๋ž˜์™€ ๊ฐ™์œผ๋ฏ€๋กœ,

  • A1 : PRODUCT_ID๊ฐ€ 1, 2์ธ ์ƒํ’ˆ
  • C3 : PRODUCT_ID๊ฐ€ 3, 4, 5์ธ ์ƒํ’ˆ
  • K1 : PRODUCT_ID๊ฐ€ 6์ธ ์ƒํ’ˆ

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์™€์•ผ ํ•ฉ๋‹ˆ๋‹ค.

CATEGORY PRODUCTS
A1 2
C3 3
K1 1

 

๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ

SELECT SUBSTR(PRODUCT_CODE, 1, 2) AS CATEGORY, count(PRODUCT_ID) AS PRODUCTS
FROM PRODUCT
GROUP BY CATEGORY
ORDER BY CATEGORY;

์ฝ”๋“œ ์„ค๋ช…

  • SUBSTR(PRODUCT_CODE, 1, 2) AS CATEGORY
    • SUBSTR(string, start_position, length) : ์ง€์ •๋œ ์œ„์น˜์—์„œ ์‹œ์ž‘ํ•˜์—ฌ ์ง€์ •๋œ ๊ธธ์ด๋งŒํผ ๋ฌธ์ž์—ด์˜ ์ผ๋ถ€๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    • SUBSTR์„ ์‚ฌ์šฉํ•ด์„œ PRODUCT_CODE ์ปฌ๋Ÿผ์˜ 1๋ฒˆ์งธ ์ž๋ฆฌ์—์„œ ์‹œ์ž‘ํ•ด์„œ ๋ฌธ์ž์—ด 5๊ฐœ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.
    • ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•  ๋•Œ CATEGORY๋ผ๋Š” ์ปฌ๋Ÿผ์œผ๋กœ ์ถœ๋ ฅํ•œ๋‹ค.
    • ์ผ๋ถ€ SQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(์˜ˆ: SQL Server) ์—์„œ๋Š” SUBSTRING() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, ๊ทธ ์‚ฌ์šฉ๋ฒ•์€ SUBSTR()์™€ ๋น„์Šทํ•˜๋‹ค.
      • SUBSTRING(string, start_position, length)
  • GROUP BY CATEGORY : CATEGORY ์ปฌ๋Ÿผ ๋ณ„๋กœ ๊ทธ๋ฃน์„ ๋ฌถ๋Š”๋‹ค.
  • ORDER BY CATEGORY : CATEGORY๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•œ๋‹ค.