๐Ÿฌ MySQL/๋ฌธ์ œํ’€์ด

[MySQL] SQL ์ฝ”๋”ฉํ…Œ์ŠคํŠธ Day8

xod22 2022. 2. 19. 00:00
728x90

์•ˆ๋ƒ์„ธ์š”~_~ ๋ฒŒ์จ LEVEL2 ๋ฌธ์ œ๋„ ๊ฑฐ์˜ ๋‹ค ํ’€์–ด๊ฐ€๊ณ  ์žˆ๋‹ต๋‹ˆ๋‹ค..!

ํ™งํƒฑ

https://programmers.co.kr/learn/courses/30/lessons/59411

 

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

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

programmers.co.kr

 

๋ฌธ์ œ(์˜ค๋žœ๊ธฐ๊ฐ„ ๋ณดํ˜ธํ•œ ๋™๋ฌผ(2)) : DATEDIFF()
ANIMAL_OUTS ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์œผ๋ฉฐ, ANIMAL_ID, ANIMAL_TYPE, DATETIME, NAME, SEX_UPON_OUTCOME๋Š” ๊ฐ๊ฐ ๋™๋ฌผ์˜ ์•„์ด๋””, ์ƒ๋ฌผ ์ข…, ์ž…์–‘์ผ, ์ด๋ฆ„, ์„ฑ๋ณ„ ๋ฐ ์ค‘์„ฑํ™” ์—ฌ๋ถ€๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

ANIMAL_OUTS
 ํ…Œ์ด๋ธ”์˜ ANIMAL_ID๋Š” ANIMAL_INS์˜ ANIMAL_ID์˜ ์™ธ๋ž˜ ํ‚ค์ž…๋‹ˆ๋‹ค.

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

 

ํ’€์ด
SELECT INS.ANIMAL_ID, INS.NAME
FROM ANIMAL_INS INS, ANIMAL_OUTS OUTS
WHERE INS.ANIMAL_ID=OUTS.ANIMAL_ID
ORDER BY DATEDIFF(INS.DATETIME, OUTS.DATETIME)
LIMIT 2;

 

1) ์™ธ๋ž˜ํ‚ค์ด๋ฏ€๋กœ ์ผ๋‹จ ๋‘ ํ…Œ์ด๋ธ”์—์„œ ๊ฐ€์ ธ์˜ด(?)

=> FROM ANIMAL_INS INS, ANIMAL_OUTS OUTS : ํŽธํ•˜๊ฒŒ ์“ฐ๊ธฐ์œ„ํ•ด์„œ INS, OUTS๋กœ ์จ์คŒ

 

2) ๋‘ ํ…Œ์ด๋ธ”์„ ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์กฐ๊ฑด๋ฌธ(WHERE)์— ๊ณตํ†ต๋œ ์ปฌ๋Ÿผ์„ ๊ธฐ์ค€์œผ๋กœ ์ถ”๊ฐ€

=> WHERE INS.ANIMAL_ID=OUTS.ANIMAL_ID

 

3) DATEDIFF ํ•จ์ˆ˜๋Š” ๋‘ ์ปฌ๋Ÿผ์˜ ๋‚ ์งœ ์ฐจ(?)๋ฅผ ๊ตฌํ•ด์ฃผ๋Š”๋“ฏ..!

=> DATEDIFF(INS.DATETIME, OUTS.DATETIME)

 

4) ๋‘๊ฐœ๋งŒ ์ถœ๋ ฅํ•˜๋ผ๊ณ  ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ORDER BY ๋์—

=> LIMIT 2;


https://programmers.co.kr/learn/courses/30/lessons/59414

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - DATETIME์—์„œ DATE๋กœ ํ˜• ๋ณ€ํ™˜

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

programmers.co.kr

 

๋ฌธ์ œ(DATETIME์—์„œ DATE๋กœ ํ˜•๋ณ€ํ™˜) : DATE_FORMAT()
ANIMAL_INS ํ…Œ์ด๋ธ”์— ๋“ฑ๋ก๋œ ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ์— ๋Œ€ํ•ด, ๊ฐ ๋™๋ฌผ์˜ ์•„์ด๋””์™€ ์ด๋ฆ„, ๋“ค์–ด์˜จ ๋‚ ์งœ๋ฅผ ์กฐํšŒํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ์ด๋•Œ ๊ฒฐ๊ณผ๋Š” ์•„์ด๋”” ์ˆœ์œผ๋กœ ์กฐํšŒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

ํ’€์ด

 

=> DATETIME ํ•„๋“œ์˜ ๊ฐ’์„ ์‹œ๊ฐ(์‹œ-๋ถ„-์ดˆ)์„ ์ œ์™ธํ•œ ๋‚ ์งœ(๋…„-์›”-์ผ)๋งŒ ๋ณด์—ฌ์ฃผ์„ธ์š”

SELECT ANIMAL_ID, NAME, DATE_FORMAT(DATETIME, '%Y-%M-%D') AS DATETIME
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;

*์˜ค๋ฅ˜๊ฐ€๋‚จ..์™œ ํ•ด๊ฒฐ์ด ์•ˆ๋˜๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Œ(?)..๋‚ด์ผ ํ•ด๊ฒฐํ•ด์•ผ์ง€..

 

<์˜ค๋ฅ˜์˜ ์ด์œ >

: DATE_FORMAT(DATETIME, '%Y-%m-%d')๋กœ ์จ์ฃผ์–ด์•ผํ•˜๋Š”๋ฐ %Y-%M-%D๋ผ๊ณ  ์จ์ฃผ์–ด ์˜ค๋ฅ˜..!

728x90