Growth ๐ŸŒณ/Practice ๐Ÿ’ป

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์นดํ…Œ๊ณ ๋ฆฌ ๋ณ„ ์ƒํ’ˆ ๊ฐœ์ˆ˜ ๊ตฌํ•˜๊ธฐ

์ธ” 2022. 12. 16. 17:54

๐Ÿ“ข ๋ณธ ํฌ์ŠคํŒ…์— ํ™œ์šฉ๋˜๋Š” ๊ธฐ๋ณธ ๋ฌธ์ œ ๋ฐ ์ž๋ฃŒ ์ถœ์ฒ˜๋Š”

       ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต,   
      https://school.programmers.co.kr/learn/challenges?page=1&languages=mysql%2Coracle
์ž„์„ ๋ฐํž™๋‹ˆ๋‹ค.

 


โ–  ๋ฌธ์ œ

๋ฌธ์ œ์„ค๋ช…

๋‹ค์Œ์€ ์–ด๋Š ์˜๋ฅ˜ ์‡ผํ•‘๋ชฐ์—์„œ ํŒ๋งค์ค‘์ธ ์ƒํ’ˆ๋“ค์˜ ์ •๋ณด๋ฅผ ๋‹ด์€ PRODUCT ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค. PRODUCT ํ…Œ์ด๋ธ”์€ ์•„๋ž˜์™€ ๊ฐ™์€ ๊ตฌ์กฐ๋กœ ๋˜์–ด์žˆ์œผ๋ฉฐ, PRODUCT_ID, PRODUCT_CODE, PRICE๋Š” ๊ฐ๊ฐ ์ƒํ’ˆ 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

 


โ–  ํ’€์ด

  ๋ฌธ์ œ ์š”๊ตฌ์‚ฌํ•ญ  

์ƒํ’ˆ ์นดํ…Œ๊ณ ๋ฆฌ ์ฝ”๋“œ(PRODUCT_CODE ์•ž 2์ž๋ฆฌ) ๋ณ„ ์ƒํ’ˆ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅ      > ๋ฌธ์ž์—ด ์ถ”์ถœ → ๋ฌธ์ž์—ด๋ณ„ GROUP BY 

๊ฒฐ๊ณผ๋Š” ์ƒํ’ˆ ์นดํ…Œ๊ณ ๋ฆฌ ์ฝ”๋“œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ                                    >  ์ •๋ ฌ์กฐ๊ฑด1

 

   MySQL ๋ฌธ์ž์—ด ์ถ”์ถœ ํ•จ์ˆ˜   

SUBSTRING(๋ฌธ์ž์—ด, ์‹œ์ž‘์œ„์น˜, ์ถ”์ถœ๊ฐฏ์ˆ˜)

LEFT(๋ฌธ์ž์—ด, ์ถ”์ถœ๊ฐฏ์ˆ˜) : ๋ฌธ์ž์—ด ์™ผ์ชฝ๋ถ€ํ„ฐ ์ถ”์ถœ

RIGHT(๋ฌธ์ž์—ด, ์ถ”์ถœ๊ฐฏ์ˆ˜) : ๋ฌธ์ž์—ด ์˜ค๋ฅธ์ชฝ๋ถ€ํ„ฐ ์ถ”์ถœ

 

SELECT LEFT(PRODUCT_CODE, 2) CATEGORY,
COUNT(*) PRODUCTS
 FROM PRODUCT
 GROUP BY 1
 ORDER BY 1;

SUBSTRING(PRODUCT_CODE, 1, 2) ๋กœ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.