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

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (Lv 4) - ๊ทธ๋ฃน๋ณ„ ์กฐ๊ฑด์— ๋งž๋Š” ์‹๋‹น ๋ชฉ๋ก ์ถœ๋ ฅํ•˜๊ธฐ

Dev_sHu 2024. 3. 31. 20:29

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

  • ๋‹ค์Œ์€ ๊ณ ๊ฐ์˜ ์ •๋ณด๋ฅผ ๋‹ด์€ MEMBER_PROFILEํ…Œ์ด๋ธ”๊ณผ ์‹๋‹น์˜ ๋ฆฌ๋ทฐ ์ •๋ณด๋ฅผ ๋‹ด์€ REST_REVIEW ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค.

 

  • MEMBER_PROFILE ํ…Œ์ด๋ธ”์€ ๋‹ค์Œ๊ณผ ๊ฐ™์œผ๋ฉฐ MEMBER_ID, MEMBER_NAME, TLNO, GENDER, DATE_OF_BIRTH๋Š” ํšŒ์› ID, ํšŒ์› ์ด๋ฆ„, ํšŒ์› ์—ฐ๋ฝ์ฒ˜, ์„ฑ๋ณ„, ์ƒ๋…„์›”์ผ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
     
Column name Type Nullable
MEMBER_ID VARCHAR(100) FALSE
MEMBER_NAME VARCHAR(50) FALSE
TLNO VARCHAR(50) TRUE
GENDER VARCHAR(1) TRUE
DATE_OF_BIRTH DATE TRUE
  • REST_REVIEW ํ…Œ์ด๋ธ”์€ ๋‹ค์Œ๊ณผ ๊ฐ™์œผ๋ฉฐ REVIEW_ID, REST_ID, MEMBER_ID, REVIEW_SCORE, REVIEW_TEXT,REVIEW_DATE๋Š” ๊ฐ๊ฐ ๋ฆฌ๋ทฐ ID, ์‹๋‹น ID, ํšŒ์› ID, ์ ์ˆ˜, ๋ฆฌ๋ทฐ ํ…์ŠคํŠธ, ๋ฆฌ๋ทฐ ์ž‘์„ฑ์ผ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
     
Column name Type Nullable
REVIEW_ID VARCHAR(10) FALSE
REST_ID VARCHAR(10) TRUE
MEMBER_ID VARCHAR(100) TRUE
REVIEW_SCORE NUMBER TRUE
REVIEW_TEXT VARCHAR(1000) TRUE
REVIEW_DATE DATE TRUE

2) ๋ฌธ์ œ

  • MEMBER_PROFILE์™€ REST_REVIEW ํ…Œ์ด๋ธ”์—์„œ ๋ฆฌ๋ทฐ๋ฅผ ๊ฐ€์žฅ ๋งŽ์ด ์ž‘์„ฑํ•œ ํšŒ์›์˜ ๋ฆฌ๋ทฐ๋“ค์„ ์กฐํšŒํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

 

  • ํšŒ์› ์ด๋ฆ„, ๋ฆฌ๋ทฐ ํ…์ŠคํŠธ, ๋ฆฌ๋ทฐ ์ž‘์„ฑ์ผ์ด ์ถœ๋ ฅ๋˜๋„๋ก ์ž‘์„ฑํ•ด์ฃผ์‹œ๊ณ , ๊ฒฐ๊ณผ๋Š” ๋ฆฌ๋ทฐ ์ž‘์„ฑ์ผ์„ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ, ๋ฆฌ๋ทฐ ์ž‘์„ฑ์ผ์ด ๊ฐ™๋‹ค๋ฉด ๋ฆฌ๋ทฐ ํ…์ŠคํŠธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•ด์ฃผ์„ธ์š”.

 

3) ์˜ˆ์‹œ

  • MEMBER_PROFILE ํ…Œ์ด๋ธ”์ด ๋‹ค์Œ๊ณผ ๊ฐ™๊ณ 
         
MEMBER_ID MEMBER_NAME TLNO GENDER DATE_OF_BIRTH
jiho92@naver.com ์ด์ง€ํ˜ธ 01076432111 W 1992-02-12
jiyoon22@hotmail.com ๊น€์ง€์œค 01032324117 W 1992-02-22
jihoon93@hanmail.net ๊น€์ง€ํ›ˆ 01023258688 M 1993-02-23
seoyeons@naver.com ๋ฐ•์„œ์—ฐ 01076482209 W 1993-03-16
yelin1130@gmail.com ์กฐ์˜ˆ๋ฆฐ 01017626711 W 1990-11-30
  • REST_REVIEW ํ…Œ์ด๋ธ”์ด ๋‹ค์Œ๊ณผ ๊ฐ™์„ ๋•Œ
           
REVIEW_ID REST_ID MEMBER_ID REVIEW_SCORE REVIEW_TEXT REVIEW_DATE
R000000065 00028 soobin97@naver.com 5 ๋ถ€์ฐŒ ๊ตญ๋ฌผ์—์„œ ์ƒค๋ธŒ์ƒค๋ธŒ ๋ง›์ด๋‚˜๊ณ  ๊น”๋” 2022-04-12
R000000066 00039 yelin1130@gmail.com 5 ๊น€์น˜์ฐŒ๊ฐœ ์ตœ๊ณฑ๋‹ˆ๋‹ค. 2022-02-12
R000000067 00028 yelin1130@gmail.com 5 ํ–„์ด ๋งŽ์•„์„œ ์ข‹์•„์š” 2022-02-22
R000000068 00035 ksyi0316@gmail.com 5 ์ˆ™์„ฑํšŒ๊ฐ€ ๋๋‚ด์ค๋‹ˆ๋‹ค. 2022-02-15
R000000069 00035 yoonsy95@naver.com 4 ๋น„๋ฆฐ๋‚ด๊ฐ€ ์ „ํ˜€์—†์–ด์š”. 2022-04-16
  • SQL์„ ์‹คํ–‰ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ถœ๋ ฅ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
     
MEMBER_NAME REVIEW_TEXT REVIEW_DATE
์กฐ์˜ˆ๋ฆฐ ๊น€์น˜์ฐŒ๊ฐœ ์ตœ๊ณฑ๋‹ˆ๋‹ค. 2022-02-12
์กฐ์˜ˆ๋ฆฐ ํ–„์ด ๋งŽ์•„์„œ ์ข‹์•„์š” 2022-02-22

4) ํ’€์ด

SELECT MEMBER_NAME
     , REVIEW_TEXT
     , DATE_FORMAT(REVIEW_DATE, '%Y-%m-%d') AS "REVIEW_DATE"
FROM REST_REVIEW r
INNER JOIN MEMBER_PROFILE m
ON r.MEMBER_ID = m.MEMBER_ID
WHERE r.MEMBER_ID = (SELECT MEMBER_ID
                     FROM REST_REVIEW
                     GROUP BY MEMBER_ID
                     ORDER BY COUNT(REVIEW_SCORE) DESC
                     LIMIT 1)
ORDER BY REVIEW_DATE, REVIEW_TEXT

 

[Reference]

 

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

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

programmers.co.kr

 

๋ฐ˜์‘ํ˜•