" MYSQL ๋‚ ์งœ ์ฐจ์ด ๊ตฌํ•˜๊ธฐ
๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
ํ˜„์—…๊ด‘๊ณ ์ธ/๊ฐ์ข…๊ฟ€ํŒ

MYSQL ๋‚ ์งœ ์ฐจ์ด ๊ตฌํ•˜๊ธฐ

by ๋…๋”˜ 2021. 2. 25.
728x90
๋ฐ˜์‘ํ˜•
 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์˜ค๋žœ ๊ธฐ๊ฐ„ ๋ณดํ˜ธํ•œ ๋™๋ฌผ(2)

ANIMAL_INS ํ…Œ์ด๋ธ”์€ ๋™๋ฌผ ๋ณดํ˜ธ์†Œ์— ๋“ค์–ด์˜จ ๋™๋ฌผ์˜ ์ •๋ณด๋ฅผ ๋‹ด์€ ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค. ANIMAL_INS ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์œผ๋ฉฐ, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE๋Š” ๊ฐ๊ฐ ๋™๋ฌผ์˜ ์•„์ด๋””

programmers.co.kr

 

ํ•ด๋‹น ๊ธ€์€ Programmers ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต์„ ํ† ๋Œ€๋กœ MYSQL ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.


Q ๋ฌธ์ œ: ์˜ค๋žœ ๊ธฐ๊ฐ„ ๋ณดํ˜ธํ•œ ๋™๋ฌผ(2) 

A ๋ฌธ์ œํ’€์ด:

 -- ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”
SELECT I.ANIMAL_ID, I.NAME
FROM ANIMAL_INS I
LEFT JOIN ANIMAL_OUTS O ON I.ANIMAL_ID=O.ANIMAL_ID
WHERE O.ANIMAL_ID IS NOT NULL
ORDER BY DATEDIFF(O.DATETIME,I.DATETIME) DESC LIMIT 2 ;
 

 

ํ•ด๋‹น๋ฌธ์ œ๋Š” ์ž…์–‘ ๊ฐ„ ๋™๋ฌผ ์ค‘, ๋ณดํ˜ธ ๊ธฐ๊ฐ„์ด ๊ฐ€์žฅ ๊ธธ์—ˆ๋˜ ๋™๋ฌผ ๋‘๋งˆ๋ฆฌ๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ด๋‹ค.

์ฆ‰, ์ž…์–‘ ๊ฐ„ ๋™๋ฌผ์ด๋ฏ€๋กœ ๋™๋ฌผ ๋ณดํ˜ธ์†Œ์—์„œ ์ž…์–‘ ๋ณด๋‚ธ ๋™๋ฌผ์ด์–ด์•ผ ๋˜๊ณ  ๋™์‹œ์— 

๋ณดํ˜ธ๊ธฐ๊ฐ„ ( ๋ณดํ˜ธ์†Œ ๋“ค์–ด์˜จ ๋‚  - ๋ณดํ˜ธ์†Œ์—์„œ ๋‚˜๊ฐ„ ๋‚ )์ด ๊ฐ€์žฅ ๊ธด ๋™๋ฌผ ๋‘ ๋งˆ๋ฆฌ๋ฅผ ์ฐพ์œผ๋ฉด ๋œ๋‹ค.

 


E ์ž์„ธํ•œ ์„ค๋ช…

 

๋จผ์ €, ์ž…์–‘ ๊ฐ„ ๋™๋ฌผ๋“ค์€ ANIMAL_OUTS ์— ์ด๋ฆ„์ด ์žˆ์œผ๋ฉด ๋œ๋‹ค. 

์ฆ‰, ANIMAL_OUTS(์ž…์–‘ ๋ณด๋‚ธ ๋™๋ฌผ ํ…Œ์ด๋ธ”)์— ์ด๋ฆ„์ด ๊ผญ ์žˆ์–ด์•ผ ํ•˜๋ฏ€๋กœ 

์กฐ๊ฑด๋ฌธ(WHERE) ์— ANIMAL_ID์— NULL๊ฐ’์ด ์•„๋‹ˆ์–ด๋ผ ๋ผ๋Š” ์กฐ๊ฑด์„ ์ค€๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ๋ณดํ˜ธ๊ธฐ๊ฐ„์ด ๊ฐ€์žฅ ๊ธด ๋‚ ์„ ์ฐพ์•„์•ผ ํ•˜๋ฏ€๋กœ 

๋ณดํ˜ธ์†Œ์— ๋“ค์–ด์˜จ ๋‚ ๊ณผ ๋ณดํ˜ธ์†Œ์— ๋‚˜๊ฐ„ ๋‚ ์˜ ์ฐจ์ด๋ฅผ ์ถœ๋ ฅํ•ด์ฃผ๋Š” DATEDIFF๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 


DATEDIFF์‚ฌ์šฉ๋ฒ•

-- ๋‚ ์งœ1 - ๋‚ ์งœ2
DATEDIFF(๋‚ ์งœ1,๋‚ ์งœ2)

 

์ •๋ ฌ์— ๋”ฐ๋ผ ์›ํ•˜๋Š” ๊ฒฐ๊ณผ ๊ฐ’์„ ์–ป์„ ์ˆœ ์žˆ์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ

๋๋‚˜๋Š” ๋‚ ์งœ - ์‹œ์ž‘ํ•œ ๋‚ ์งœ ๋ฅผ ํ•ด์•ผ ์–‘์˜ ๊ฐ’์„ ์–ป๊ณ  ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ์„ ํ•˜๋ฉด

๊ธฐ๊ฐ„์ด ํฐ ๋‚ ์งœ๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค.

(์„ค๋ช…์„ ์ง์ ‘ ์“ด ๋‚˜๋„ ๋‚œ๋…์ฆ์ด...) ํ—ท๊ฐˆ๋ฆฌ๋‹ˆ ๋ฐ‘์— ์‚ฌ์ง„์„ ์ฐธ๊ณ ํ•ด๋ณด์ž. 

 

๋‚ ์งœ์ฐจ์ด1 : DATEDIFF(๋ณดํ˜ธ์†Œ ๋‚˜๊ฐ„ ๋‚ ์งœ , ๋ณดํ˜ธ์†Œ ๋“ค์–ด์˜จ ๋‚ ์งœ)

๋‚ ์งœ์ฐจ์ด2 : DATEDIFF(๋ณดํ˜ธ์†Œ ๋“ค์–ด์˜จ ๋‚ ์งœ , ๋ณดํ˜ธ์†Œ ๋‚˜๊ฐ„ ๋‚ ์งœ)

 

โ€ป ์ฐธ๊ณ ๋กœ ์œ„ ๊ฒฐ๊ณผ๊ฐ’์€ ORDERBY ๋‚ ์งœ์ฐจ์ด1 DESC ๋‚ด๋ฆผ์ฐจ์ˆœ์„ ํ–ˆ๋‹ค. (์ •๋ ฌ ๊ธฐ๋ณธ๊ฐ’์€ ASC ์˜ค๋ฆ„์ฐจ์ˆœ ์ด๋‹ค.)

 

๋ฐ˜์‘ํ˜•