๐ 1. ๋ฌธ์ ์ค๋ช
โญ 2. ์ ๋ต์ฝ๋
๋ด๊ฐ ํผ ์ฝ๋
ORDER BY DATEDIFF (์
์์ผ, ํด์์ผ)
SELECT I.ANIMAL_ID, I.NAME
FROM ANIMAL_INS I JOIN ANIMAL_OUTS O ON I.Animal_id = O.Animal_id
ORDER BY DATEDIFF(I.DATETIME, O.DATETIME)
LIMIT 2
์ด๋ ๊ฒ ํด์ ์ ๋ต์ฒ๋ฆฌ๊ฐ ๋ฌ๋๋ฐ ๋ค๋ฅธ ์ฌ๋๋ค์ด ์ด ์ฝ๋๋ฅผ ๋ณด๋ค๊ฐ ๋ญ๊ฐ ์ด์ํ ์ ๋ฐ๊ฒฌ!
๋ณดํธ์ ํด์์ผ - ์
์์ผ ์ ํด์ ๊ทธ ๊ฐ์ด ํฐ ์์๋๋ก 2๊ฑด์ ๋ฐํํ๋ ๊ฑด๋ฐ
๋๋ ์
์์ผ - ํด์์ผ๋ก ๋ฐ๋๋ก ์ ์๋ค ๋์ ์ค๋ฆ์ฐจ์์ผ๋ก ํ๋๊น ์๋ํ๋ค.
๐ฆ 3. ๋ค๋ฅธ ์ฌ๋๋ค์ด ํผ ์ฝ๋
ORDER BY DATEDIFF (ํด์์ผ, ์
์์ผ) DESC
SELECT I.ANIMAL_ID, I.NAME
FROM ANIMAL_INS I JOIN ANIMAL_OUTS O ON I.Animal_id = O.Animal_id
ORDER BY DATEDIFF(O.DATETIME, I.DATETIME) DESC
LIMIT 2
โ
DATEDIFF(O.DATETIME, I.DATETIME)
DATEDIFF() ํจ์๋ ๋ ๋ ์ง ๊ฐ ์ฌ์ด์ ์ฐจ์ด๋ฅผ ๊ณ์ฐ = ๋ ๋ ์ง ๊ฐ์ ์ผ(day)์ ์ฐจ์ด ๋ฐํ
O.DATETIME (์
์์ผ)๊ณผ I.DATETIME (๋ณดํธ์์ ์๋ ๋ ์ง) ๊ฐ์ ์ฐจ์ด๋ฅผ ๊ณ์ฐ
๋ณดํธ์์ ์์๋ ๊ธฐ๊ฐ์ด ๊ธธ์๋ก ๋ ์ง ์ฐจ์ด๊ฐ ํฌ๋ค.
โ
ORDER BY DATEDIFF(O.DATETIME, I.DATETIME) DESC
DATEDIFF(O.DATETIME, I.DATETIME) ๊ฐ์ ๋ฐ๋ผ ๊ฒฐ๊ณผ๋ฅผ ์ ๋ ฌํ๋ค.
์ด ์ฟผ๋ฆฌ์์๋ DATEDIFF(I.DATETIME, O.DATETIME) DESC -> ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ๋จ
= ๋ ์ง ์ฐจ์ด๊ฐ ํฐ ์์๋๋ก ์ ๋ ฌ
** ๋ง์ฝ ๋ ์ง ์ฐจ์ด๊ฐ ์์ ์์๋๋ก ์ ๋ ฌํ๊ณ ์ถ๋ค๋ฉด,
ORDER BY DATEDIFF(I.DATETIME, O.DATETIME)
โ
LIMIT 2
LIMIT 2๋ ์ ๋ ฌ๋ ๊ฒฐ๊ณผ์์ ์์ 2๊ฐ์ ํ๋ง ๋ฐํํ๋ผ๋ ์๋ฏธ์ด๋ค.
์ฆ, ๋ ์ง ์ฐจ์ด๊ฐ ๊ฐ์ฅ ํฐ ์์ 2๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์จ๋ค.
= ๋ณดํธ ๊ธฐ๊ฐ์ด ๊ธด ์์ ๋ ๊ฐ์ ๋๋ฌผ๋ง ๊ฐ์ ธ์ค๊ธฐ
ORDER BY ์ ์์ ์ผ์ ์ฐจ์ด ๊ณ์ฐ, ์ ๋ ฌ๋ ๊ฐ์ด ์ด๋ฃจ์ด์ง๊ณ ์๋ค.
๐ค 4. ๋ ์ฟผ๋ฆฌ๊ฐ ๊ฒฐ๊ณผ์ ์ผ๋ก ๊ฐ์ ์ด์
[์ฒซ๋ฒ์งธ ์ฟผ๋ฆฌ(๋ด์ฟผ๋ฆฌ)]
SELECT I.ANIMAL_ID, I.NAME
FROM ANIMAL_INS I
JOIN ANIMAL_OUTS O ON I.ANIMAL_ID = O.ANIMAL_ID
ORDER BY DATEDIFF(I.DATETIME, O.DATETIME)
LIMIT 2;
DATEDIFF(I.DATETIME, O.DATETIME)๋ ์
์์ผ (I.DATETIME) - ํด์์ผ (O.DATETIME) ์ ์ฐจ์ด๋ฅผ ๊ณ์ฐํ๋ค.
์ด ๊ฒฐ๊ณผ๋ ์
์์ผ์ด ํด์์ผ๋ณด๋ค ๋น ๋ฅด๋ฉด ์์, ์
์์ผ์ด ํด์์ผ๋ณด๋ค ๋ฆ์ผ๋ฉด ์์๊ฐ ๋๋ค.
๊ฒฐ๊ณผ๋ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋๋ค.
LIMIT 2๋ ๊ฐ์ฅ ์์ ๋ ์ง ์ฐจ์ด ๋ ๊ฐ๋ฅผ ์ ํํ๋ค.
[๋๋ฒ์งธ ์ฟผ๋ฆฌ]
SELECT I.ANIMAL_ID, I.NAME
FROM ANIMAL_INS I
JOIN ANIMAL_OUTS O ON I.ANIMAL_ID = O.ANIMAL_ID
ORDER BY DATEDIFF(O.DATETIME, I.DATETIME) DESC
LIMIT 2;
DATEDIFF(O.DATETIME, I.DATETIME)๋ ํด์์ผ (O.DATETIME) - ์
์์ผ (I.DATETIME) ์ ์ฐจ์ด๋ฅผ ๊ณ์ฐํ๋ค.
์ด ๊ฒฐ๊ณผ๋ ํด์์ผ์ด ์
์์ผ๋ณด๋ค ๋น ๋ฅด๋ฉด ์์, ํด์์ผ์ด ์
์์ผ๋ณด๋ค ๋ฆ์ผ๋ฉด ์์๊ฐ ๋๋ค.
ORDER BY์์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ๋๋ค.
LIMIT 2๋ ๊ฐ์ฅ ํฐ ๋ ์ง ์ฐจ์ด ๋ ๊ฐ๋ฅผ ์ ํํ๋ค.
Why?
๋ ๊ฐ์ ๊ฒฐ๊ณผ๋ ์๋ก ๋ฐ๋๊ฐ์ด๋ค. ์ฆ, ํ ์ชฝ์ด ์์์ด๋ฉด ๋ค๋ฅธ ์ชฝ์ ์์์ด๊ณ , ๊ทธ ๋ฐ๋๋ ๋ง์ฐฌ๊ฐ์ง์ด๋ค.
๋ฐ๋ผ์ ๋ ์ฟผ๋ฆฌ๋ ์๋ก ๋ฐ๋์ ๋ ์ง ์ฐจ์ด๋ฅผ ์ฌ์ฉํ์ง๋ง, ์ ๋ ฌ ๋ฐฉ์์ด ๋ฐ๋์ฌ์ ๊ฒฐ๊ณผ๋ ๋์ผํ๋ค.
์ด ๋ ORDER BY๊ฐ ๋ฐ๋ ๋ฐฉํฅ์ผ๋ก ์ ๋ ฌ๋๊ธฐ ๋๋ฌธ์,
๋ ์ฟผ๋ฆฌ๊ฐ ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ ์ง ์ฐจ์ด๊ฐ ํฐ ๋ ๊ฐ์ ๋๋ฌผ์ ์ ํํ๋ ๊ฒฐ๊ณผ๊ฐ ๋์ผํ๊ฒ ๋์จ๋ค.
์ฒซ ๋ฒ์งธ ์ฟผ๋ฆฌ๋ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๊ณ , ๋ ๋ฒ์งธ ์ฟผ๋ฆฌ๋ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ์ง๋ง, ์ฒซ ๋ฒ์งธ ์ฟผ๋ฆฌ๊ฐ ๊ฐ์ฅ ์์ ๋ ์ง ์ฐจ์ด ๋ ๊ฐ๋ฅผ ์ ํํ๋ฉด ๋ ๋ฒ์งธ ์ฟผ๋ฆฌ๋ ๊ฐ์ฅ ํฐ ๋ ์ง ์ฐจ์ด ๋ ๊ฐ๋ฅผ ์ ํํ ํ ๊ทธ ์ฐจ์ด์ ๋ฐ๋ ๊ฐ์ ์ถ๋ ฅํ๊ธฐ ๋๋ฌธ์, ์ต์ข
์ ์ผ๋ก ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ์ด๋ค.
์์๋ฐ์ดํฐ
ANIMAL_INS (์ ์ ๋ฐ์ดํฐ)
ANIMAL_ID | NAME | DATETIME |
1 | Dog1 | 2025-01-10 08:00:00 |
2 | Dog2 | 2025-01-12 09:00:00 |
3 | Dog3 | 2025-01-15 10:00:00 |
4 | Dog4 | 2025-01-20 11:00:00 |
5 | Dog5 | 2025-01-25 12:00:00 |
ANIMAL_OUTS (ํด์ ๋ฐ์ดํฐ)
ANIMAL_ID | NAME | DATETIME |
1 | Dog1 | 2025-01-13 08:00:00 |
2 | Dog2 | 2025-01-17 09:00:00 |
3 | Dog3 | 2025-01-18 10:00:00 |
4 | Dog4 | 2025-01-22 11:00:00 |
5 | Dog5 | 2025-01-30 12:00:00 |
๋ ์ง ์ฐจ์ด ๊ณ์ฐ (DATEDIFF)
DATEDIFF(I.DATETIME, O.DATETIME) ๊ณ์ฐ (์
์์ผ - ํด์์ผ)
Dog1: DATEDIFF(2025-01-10, 2025-01-13) = -3 (์
์์ผ์ด ํด์์ผ๋ณด๋ค 3์ผ ๋ ์ด๋ฅธ)
Dog2: DATEDIFF(2025-01-12, 2025-01-17) = -5 (์
์์ผ์ด ํด์์ผ๋ณด๋ค 5์ผ ๋ ์ด๋ฅธ)
Dog3: DATEDIFF(2025-01-15, 2025-01-18) = -3 (์
์์ผ์ด ํด์์ผ๋ณด๋ค 3์ผ ๋ ์ด๋ฅธ)
Dog4: DATEDIFF(2025-01-20, 2025-01-22) = -2 (์
์์ผ์ด ํด์์ผ๋ณด๋ค 2์ผ ๋ ์ด๋ฅธ)
Dog5: DATEDIFF(2025-01-25, 2025-01-30) = -5 (์
์์ผ์ด ํด์์ผ๋ณด๋ค 5์ผ ๋ ์ด๋ฅธ)
DATEDIFF(O.DATETIME, I.DATETIME) ๊ณ์ฐ (ํด์์ผ - ์
์์ผ)
Dog1: DATEDIFF(2025-01-13, 2025-01-10) = 3 (ํด์์ผ์ด ์
์์ผ๋ณด๋ค 3์ผ ๋ ๋ฆ์)
Dog2: DATEDIFF(2025-01-17, 2025-01-12) = 5 (ํด์์ผ์ด ์
์์ผ๋ณด๋ค 5์ผ ๋ ๋ฆ์)
Dog3: DATEDIFF(2025-01-18, 2025-01-15) = 3 (ํด์์ผ์ด ์
์์ผ๋ณด๋ค 3์ผ ๋ ๋ฆ์)
Dog4: DATEDIFF(2025-01-22, 2025-01-20) = 2 (ํด์์ผ์ด ์
์์ผ๋ณด๋ค 2์ผ ๋ ๋ฆ์)
Dog5: DATEDIFF(2025-01-30, 2025-01-25) = 5 (ํด์์ผ์ด ์
์์ผ๋ณด๋ค 5์ผ ๋ ๋ฆ์)\
์ ๋ ฌ ๊ฒฐ๊ณผ
์ฒซ ๋ฒ์งธ ์ฟผ๋ฆฌ
ORDER BY DATEDIFF(I.DATETIME, O.DATETIME)
์
์์ผ - ํด์์ผ์ ์ฐจ์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
Dog2: -5 (๊ฐ์ฅ ์์ ๋ ์ง ์ฐจ์ด)
Dog5: -5
Dog1: -3
Dog3: -3
Dog4: -2
์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ ํ ์์ 2๊ฐ ๋๋ฌผ์ Dog2์ Dog5
๋ ๋ฒ์งธ ์ฟผ๋ฆฌ
ORDER BY DATEDIFF(O.DATETIME, I.DATETIME) DESC
ํด์์ผ - ์
์์ผ์ ์ฐจ์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ
Dog2: 5
Dog5: 5
Dog1: 3
Dog3: 3
Dog4: 2
๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ ํ ์์ 2๊ฐ ๋๋ฌผ์ Dog2์ Dog5