๐Ÿ’ฏ Coding Test/SQL ํ…Œ์ŠคํŠธ

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (Lv 1) - ์žก์€ ๋ฌผ๊ณ ๊ธฐ์˜ ํ‰๊ท  ๊ธธ์ด ๊ตฌํ•˜๊ธฐ

Dev_sHu 2024. 4. 1. 01:08

1) ๋ฌธ์ œ ์„ค๋ช…

  • ๋‚š์‹œ์•ฑ์—์„œ ์‚ฌ์šฉํ•˜๋Š” FISH_INFO ํ…Œ์ด๋ธ”์€ ์žก์€ ๋ฌผ๊ณ ๊ธฐ๋“ค์˜ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

  • FISH_INFO ํ…Œ์ด๋ธ”์˜ ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์œผ๋ฉฐ ID, FISH_TYPE, LENGTH, TIME์€ ๊ฐ๊ฐ ์žก์€ ๋ฌผ๊ณ ๊ธฐ์˜ ID, ๋ฌผ๊ณ ๊ธฐ์˜ ์ข…๋ฅ˜(์ˆซ์ž), ์žก์€ ๋ฌผ๊ณ ๊ธฐ์˜ ๊ธธ์ด(cm), ๋ฌผ๊ณ ๊ธฐ๋ฅผ ์žก์€ ๋‚ ์งœ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
     
Column name Type Nullable
ID INTEGER FALSE
FISH_TYPE INTEGER FALSE
LENGTH FLOAT TRUE
TIME DATE FALSE
  • ๋‹จ, ์žก์€ ๋ฌผ๊ณ ๊ธฐ์˜ ๊ธธ์ด๊ฐ€ 10cm ์ดํ•˜์ผ ๊ฒฝ์šฐ์—๋Š” LENGTH ๊ฐ€ NULL ์ด๋ฉฐ, LENGTH ์— NULL ๋งŒ ์žˆ๋Š” ๊ฒฝ์šฐ๋Š” ์—†์Šต๋‹ˆ๋‹ค.

 

2) ๋ฌธ์ œ

  • ์žก์€ ๋ฌผ๊ณ ๊ธฐ์˜ ํ‰๊ท  ๊ธธ์ด๋ฅผ ์ถœ๋ ฅํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

 

  • ํ‰๊ท  ๊ธธ์ด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ปฌ๋Ÿผ ๋ช…์€ AVERAGE_LENGTH๋กœ ํ•ด์ฃผ์„ธ์š”.

 

  • ํ‰๊ท  ๊ธธ์ด๋Š” ์†Œ์ˆ˜์  3์งธ์ž๋ฆฌ์—์„œ ๋ฐ˜์˜ฌ๋ฆผํ•˜๋ฉฐ, 10cm ์ดํ•˜์˜ ๋ฌผ๊ณ ๊ธฐ๋“ค์€ 10cm ๋กœ ์ทจ๊ธ‰ํ•˜์—ฌ ํ‰๊ท  ๊ธธ์ด๋ฅผ ๊ตฌํ•ด์ฃผ์„ธ์š”.

 

3) ์˜ˆ์‹œ

  • ์˜ˆ๋ฅผ ๋“ค์–ด FISH_INFO ํ…Œ์ด๋ธ”์ด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค๋ฉด
     
ID FISH_TYPE LENGTH
0 0 30
1 0 50
2 0 40
3 1 20
4 1 NULL
5 2 NULL
  • 10cm ์ดํ•˜์˜ ๋ฌผ๊ณ ๊ธฐ๋Š” 10cm ๋กœ ์ทจ๊ธ‰ํ•˜๋ฏ€๋กœ ์ด ๋ฌผ๊ณ ๊ธฐ์˜ ๊ธธ์ด์˜ ํ•ฉ์€ 30 + 50 + 40 + 20 + 10 +10 = 160 ์ด๋ฉฐ ์ด ๋ฌผ๊ณ ๊ธฐ์˜ ์ˆ˜๋Š” 6๋งˆ๋ฆฌ์ด๋ฏ€๋กœ ์žก์€ ๋ฌผ๊ณ ๊ธฐ์˜ ํ‰๊ท  ๊ธธ์ด๋Š” 160/6 = 26.666.. ์ž…๋‹ˆ๋‹ค.

 

  • ์ด๋ฅผ ์†Œ์ˆ˜์  3์งธ์ž๋ฆฌ์—์„œ ๋ฐ˜์˜ฌ๋ฆผํ•˜๋ฉด 26.67 ์ด๋ฏ€๋กœ ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
 
AVERAGE_LENGTH
26.67

4) ํ’€์ด

SELECT ROUND(AVG(IFNULL(LENGTH, 10)),2) AS "AVERAGE_LENGTH"
FROM FISH_INFO;

 

[Reference]

 

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

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

๋ฐ˜์‘ํ˜•