Growth ๐ŸŒณ/Practice ๐Ÿ’ป

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๊ฐ€๊ฒฉ๋Œ€ ๋ณ„ ์ƒํ’ˆ ๊ฐœ์ˆ˜ ๊ตฌํ•˜๊ธฐ

์ธ” 2022. 12. 9. 04:02

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

       ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต,   
      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 ํ…Œ์ด๋ธ”์—์„œ ๋งŒ์› ๋‹จ์œ„์˜ ๊ฐ€๊ฒฉ๋Œ€ ๋ณ„๋กœ ์ƒํ’ˆ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” SQL ๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ์ด๋•Œ ์ปฌ๋Ÿผ๋ช…์€ ๊ฐ๊ฐ ์ปฌ๋Ÿผ๋ช…์€ PRICE_GROUP, PRODUCTS๋กœ ์ง€์ •ํ•ด์ฃผ์‹œ๊ณ  ๊ฐ€๊ฒฉ๋Œ€ ์ •๋ณด๋Š” ๊ฐ ๊ตฌ๊ฐ„์˜ ์ตœ์†Œ๊ธˆ์•ก(10,000์› ์ด์ƒ ~ 20,000 ๋ฏธ๋งŒ์ธ ๊ตฌ๊ฐ„์ธ ๊ฒฝ์šฐ 10,000)์œผ๋กœ ํ‘œ์‹œํ•ด์ฃผ์„ธ์š”. ๊ฒฐ๊ณผ๋Š” ๊ฐ€๊ฒฉ๋Œ€๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•ด์ฃผ์„ธ์š”.

 


โ–  ํ’€์ด

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

PRODUCT ํ…Œ์ด๋ธ”์—์„œ ๋งŒ์› ๋‹จ์œ„์˜ ๊ฐ€๊ฒฉ๋Œ€ ๋ณ„๋กœ ์ƒํ’ˆ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅ                                                             >  ๊ทธ๋ฃนํ•‘

์ด๋•Œ ์ปฌ๋Ÿผ๋ช…์€ ๊ฐ๊ฐ ์ปฌ๋Ÿผ๋ช…์€ PRICE_GROUP, PRODUCTS๋กœ ์ง€์ •                                                          > ALIAS ์‚ฌ์šฉ

๊ฐ€๊ฒฉ๋Œ€ ์ •๋ณด๋Š” ๊ฐ ๊ตฌ๊ฐ„์˜ ์ตœ์†Œ๊ธˆ์•ก(10,000์› ์ด์ƒ ~ 20,000 ๋ฏธ๋งŒ์ธ ๊ตฌ๊ฐ„์ธ ๊ฒฝ์šฐ 10,000)์œผ๋กœ ํ‘œ์‹œ*   

๊ฒฐ๊ณผ๋Š” ๊ฐ€๊ฒฉ๋Œ€๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ                                                                                                           >  ์ •๋ ฌ์กฐ๊ฑด1

 

* ๊ฐ€๊ฒฉ๋Œ€๋ณ„ ๊ทธ๋ฃนํ•‘์„ ์œ„ํ•ด์„œ๋Š” ๊ธˆ์•ก ๊ตฌ๊ฐ„๋Œ€๋ณ„๋กœ ๊ธฐ์ค€ ๊ธˆ์•ก์œผ๋กœ ์„ค์ •ํ•ด์•ผ ํ•จ.

PRICE ๋ฐ์ดํ„ฐ ํƒ€์ž… INTEGER์ด๋ฏ€๋กœ ์ˆซ์ž์— ์“ธ ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜ ์ค‘ TRUNCATE()๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด a ์ด์ƒ b ๋ฏธ๋งŒ ๋ฒ”์œ„๋กœ ๊ตฌ๊ฐ„๋Œ€๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ.

TRUNCATE(์ˆซ์ž, ์ž๋ฆฟ์ˆ˜) > ์ž๋ฆฟ์ˆ˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฒ„๋ฆผ

 

ํ’€์ด ์ˆœ์„œ)

๊ฐ€๊ฒฉ๋Œ€ ์ปฌ๋Ÿผ(PRICE_GROUP) ์ƒ์„ฑ → ๊ฐ€๊ฒฉ๋Œ€ ๊ธฐ์ค€ GROUP BY→ ๊ฐ€๊ฒฉ๋Œ€๋ณ„ ๊ฐฏ์ˆ˜ COUNT→ ์ •๋ ฌ ORDER BY

SELECT TRUNCATE(PRICE, -4) AS PRICE_GROUP,
       COUNT(*) AS PRODUCTS
 FROM PRODUCT
 GROUP BY 1
 ORDER BY 1

 

๐Ÿ“Œ ์ˆซ์žํ•จ์ˆ˜ ๋ณต์Šต

ํ•จ์ˆ˜

๊ฒฐ๊ณผ
ABS(num) ์ ˆ๋Œ“๊ฐ’
CEIL(num) ๊ฐ’๋ณด๋‹ค ํฐ ์ •์ˆ˜ ์ค‘ ๊ฐ€์žฅ ์ž‘์€ ์ •์ˆ˜ (์†Œ์ˆ˜์  ์ดํ•˜ ์˜ฌ๋ฆผ)
FLOOR(num) ๊ฐ’๋ณด๋‹ค ์ž‘์€ ์ •์ˆ˜ ์ค‘ ๊ฐ€์žฅ ํฐ ์ •์ˆ˜ (์†Œ์ˆ˜์  ์ดํ•˜ ๋ฒ„๋ฆผ)
ROUND(num, ์ž๋ฆฟ์ˆ˜) ์ž๋ฆฟ์ˆ˜ ๊ธฐ์ค€์œผ๋กœ ๋ฐ˜์˜ฌ๋ฆผ
TRUNCATE(num, ์ž๋ฆฟ์ˆ˜) ์ž๋ฆฟ์ˆ˜ ๊ธฐ์ค€์œผ๋กœ ๋ฒ„๋ฆผ
POW(X, Y)
POWER(X, Y)
X์˜ Y์Šน
MOD(a, b) a๋ฅผ b๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€
GREATEST(num1, num2…) ์ฃผ์–ด์ง„ ์ˆซ์ž ์ค‘ ๊ฐ€์žฅ ํฐ ๊ฐ’
LEAST(num1, num2) ์ฃผ์–ด์ง„ ์ˆซ์ž ์ค‘ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’