[MySQL] RANK ํ•จ์ˆ˜
ยท
์ฝ”ํ…Œ/์ •๋ฆฌ
๋งŒ์•ฝ [STUDENTS]๋ผ๋Š” ํ…Œ์ด๋ธ”์ด ์กด์žฌํ•  ๋•Œ, RANKํ•จ์ˆ˜๋ณ„ ์–ด๋–ป๊ฒŒ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜ํƒ€๋‚˜๋Š”์ง€ ํ™•์ธํ•ด๋ณด์ž. ID NAME AGE SCORE 1 ๊น€๋ฐ”๋‹๋ผ 18 76 2 ์ดํฌ๋„ 15 95 3 ์กฐ๋ง๊ณ  14 83 4 ๋ฐ•๋”ธ๊ธฐ 19 83 1. ROW_NUMBER() : ๊ฒฐ๊ณผ ์ง‘ํ•ฉ ๋‚ด์˜ ๊ฐ ํ–‰์— ๊ณ ์œ  ๋ฒˆํ˜ธ๋ฅผ ํ• ๋‹น. SELCT ID, NAME, AGE, SCORE, ROW_NUMBER() OVER(ORDER BY SCORE DESC) AS GRADE_RANK FROM STUDENTS; ID NAME AGE SCORE GRADE_RANK 1 ๊น€๋ฐ”๋‹๋ผ 18 76 4 2 ์ดํฌ๋„ 15 95 1 3 ์กฐ๋ง๊ณ  14 83 2 4 ๋ฐ•๋”ธ๊ธฐ 19 83 3 2. RANK() : ๋™์ผํ•œ ๊ฐ’์„ ๊ฐ€์ง„ ํ–‰์— ๋Œ€ํ•ด ๋™์ผํ•œ ์ˆœ์œ„๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๋™์ผํ•œ ๊ฐ’์„ ..
[Programmers] ๋Œ€์žฅ๊ท ์˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ ๋ถ„๋ฅ˜ํ•˜๊ธฐ 2 (MySQL)
ยท
์ฝ”ํ…Œ/SQL
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”. programmers.co.kr ์ƒˆ๋กœ ์•Œ๊ฒŒ๋œ ์  ์›๋ž˜ ํ…Œ์ด๋ธ”์˜ ํฌ๊ธฐ๋ฅผ ๊ตฌํ•  ๋•Œ, ๋งค๋ฒˆ CASE WHEN THEN ์•ˆ์—์„œ SELECT COUNT(์ปฌ๋Ÿผ) FROM ํ…Œ์ด๋ธ” ์„ ์‚ฌ์šฉํ•ด์„œ ๊ตฌํ•ด์คฌ๋Š”๋ฐ, ์‰ฝ๊ฒŒ ๊ตฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•˜๋‹ค! MAX(์ปฌ๋Ÿผ) OVER() AS ๋ฐ”๊ฟ€ ์ปฌ๋Ÿผ๋ช… ์„ ์‚ฌ์šฉํ•˜๋ฉด ์‰ฝ๊ฒŒ ๊ตฌํ•  ์ˆ˜ ์žˆ๋”๋ผ !! ํ’€์ด ROW_NUMBER()๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋Œ€์žฅ๊ท  ์‚ฌ์ด์ฆˆ ๋ณ„๋กœ ์ˆœ์œ„๋ฅผ ๋งค๊ฒจ์คฌ๋‹ค. ROW_NUMBER() OVER(ORDER BY ์ปฌ๋Ÿผ๋ช… DESC/ASC) ROW_NUMBER() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, OVER์•ˆ์— ๋„ฃ์€ ์ปฌ๋Ÿผ์„ ๊ธฐ์ค€์œผ๋กœ ๊ณ ์œ ํ•œ ๊ฐ’..