์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- SwiftUI
- SQL
- IOS
- duno
- algorithm
- BFS
- ๋ค์ด๋๋ฏนํ๋ก๊ทธ๋๋ฐ
- 0์ด๋์ด์๋๊ธธ
- URLSession
- HAVIT
- discardableResult
- ๊ณ ๋์ kit
- ์ด์งํ์
- algoritm
- ์ฐ์ํ์ค๋ถ๋ถ์์ด์ํฉ
- concurrency
- SwiftUI ํํ ๋ฆฌ์ผ
- DynamicProgramming
- binarySearch
- ๊ธฐ์ด๋ฌธ๋ฒ
- GroupBy
- SOPT
- APPJAM
- ๋์ ๊ณํ๋ฒ
- Til
- SwiftUI Tutorials
- ํ๋ก๊ทธ๋๋จธ์ค
- GCD
- dfs
- Swift
- Today
- Total
suvera-dev ๐ฅฆ
SQL) ํ๋ก๊ทธ๋๋จธ์ค SQL ๊ณ ๋์ Kit - JOIN ๋ณธ๋ฌธ
SQL) ํ๋ก๊ทธ๋๋จธ์ค SQL ๊ณ ๋์ Kit - JOIN
suvera 2022. 4. 16. 03:39
ANIMAL_INS
ANIMAL_OUTS
1. ์์ด์ง ๊ธฐ๋ก ์ฐพ๊ธฐ
์ฒ์ฌ์ง๋ณ์ผ๋ก ์ธํด ์ผ๋ถ ๋ฐ์ดํฐ๊ฐ ์ ์ค๋์์ต๋๋ค.
์ ์์ ๊ฐ ๊ธฐ๋ก์ ์๋๋ฐ, ๋ณดํธ์์ ๋ค์ด์จ ๊ธฐ๋ก์ด ์๋ ๋๋ฌผ์ ID์ ์ด๋ฆ์ ID ์์ผ๋ก ์กฐํํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์.
SELECT OUTS.ANIMAL_ID, OUTS.NAME
FROM ANIMAL_OUTS OUTS
LEFT OUTER JOIN ANIMAL_INS INS
ON OUTS.ANIMAL_ID = INS.ANIMAL_ID
WHERE INS.ANIMAL_ID is NULL
ORDER BY OUTS.ANIMAL_ID
LEFT JOIN : ์ผ์ชฝ ํ ์ด๋ธ์ ์ค์ฌ์ผ๋ก ์ค๋ฅธ์ชฝ์ ํ ์ด๋ธ์ ๋งค์น์ํจ๋ค.
์ผ์ชฝ ํ
์ด๋ธ์ ํ๊ฐ์ ๋ ์ฝ๋์ ์ฌ๋ฌ๊ฐ์ ์ค๋ฅธ์ชฝ ํ
์ด๋ธ ๋ ์ฝ๋๊ฐ ์ผ์นํ ๊ฒฝ์ฐ,
ํด๋น ์ผ์ชฝ ๋ ์ฝ๋๋ฅผ ์ฌ๋ฌ๋ฒ ํ์ํ๊ฒ ๋๋ค.
์ผ์ชฝ์ ๋ฌด์กฐ๊ฑด ํ์ํ๊ณ , ๋งค์น๋๋ ๋ ์ฝ๋๊ฐ ์ค๋ฅธ์ชฝ์ ์์ผ๋ฉด NULL์ ํ์ํ๋ค.
์ฌ๊ธฐ์ LEFT JOIN์ ์ฌ์ฉํ ์ด์ ๋ ์ผ์ชฝ ํ ์ด๋ธ์ธ ANIMAL_OUTS์ ํฌํจ๋๋ ๋ฐ์ดํฐ์ธ
์ ์๋ณด๋ธ ๊ธฐ๋ก์ ์๊ณ , ANIMAL_INS์ ํฌํจ๋๋ ๋ฐ์ดํฐ์ธ ๋ณดํธ์์ ๋ค์ด์จ ๊ธฐ๋ก์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
๊ธฐ์กด์ ANIMAL_INS ํ ์ด๋ธ์์ ์์๋ ๋ด์ฉ๋ค์ ID๊ฐ NULL ์ฒ๋ฆฌ๋์ด ๋ค์ด์ค๋ฏ๋ก
WHERE ์ ์ IS NULL์ ์ถ๊ฐํ๋ฉด
ANIMAL_OUTS์๋ ์์ง๋ง ANIMAL_INS์๋ ์๋ ๊ฐ๋ค๋ง ์ถ๋ ฅํ ์ ์๋ค.
์กฐ์ธ ํ ๋๋ ๋๋ฌผ ์์ด๋๊ฐ ๊ฐ์ ๊ฒ์ ๊ธฐ์ค์ผ๋ก ํ๋ค์ ์ ๋ ฌํด์ค๋ค !
2. ์์๋๋ฐ์ ์์์ต๋๋ค
๊ด๋ฆฌ์์ ์ค์๋ก ์ผ๋ถ ๋๋ฌผ์ ์ ์์ผ์ด ์๋ชป ์ ๋ ฅ๋์์ต๋๋ค.
๋ณดํธ ์์์ผ๋ณด๋ค ์ ์์ผ์ด ๋ ๋น ๋ฅธ ๋๋ฌผ์ ์์ด๋์ ์ด๋ฆ์ ์กฐํํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์.
์ด๋ ๊ฒฐ๊ณผ๋ ๋ณดํธ ์์์ผ์ด ๋น ๋ฅธ ์์ผ๋ก ์กฐํํด์ผํฉ๋๋ค.
SELECT INS.ANIMAL_ID, INS.NAME
FROM ANIMAL_INS INS
LEFT JOIN ANIMAL_OUTS OUTS
ON INS.ANIMAL_ID = OUTS.ANIMAL_ID
WHERE INS.DATETIME > OUTS.DATETIME
ORDER BY INS.DATETIME
INS์๋ ๋ณดํธ ์์์ผ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ๊ณ , OUTS์๋ ์ ์์ผ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ๋ค.
์ ์์ผ์ด ์๋ชป ์ ๋ ฅ๋์์ผ๋ฏ๋ก, ๋ณดํธ์์์ผ ๋ฐ์ดํฐ๊ฐ ์๋ INS ํ ์ด๋ธ์ ๊ธฐ์ค์ผ๋ก LEFT JOIN.
๋ณดํธ ์์์ผ๋ณด๋ค ์ ์์ผ์ด ๋ ๋น ๋ฅธ ๋๋ฌผ์ ์กฐํํ๊ธฐ ์ํด์ INS.DATETIME๊ณผ OUTS.DATETIME ๋น๊ต.
3. ์ค๋๊ธฐ๊ฐ ๋ณดํธํ ๋๋ฌผ
์์ง ์ ์์ ๋ชป ๊ฐ ๋๋ฌผ ์ค, ๊ฐ์ฅ ์ค๋ ๋ณดํธ์์ ์์๋ ๋๋ฌผ 3๋ง๋ฆฌ์ ์ด๋ฆ๊ณผ ๋ณดํธ ์์์ผ์ ์กฐํํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์.
์ด๋ ๊ฒฐ๊ณผ๋ ๋ณดํธ ์์์ผ ์์ผ๋ก ์กฐํํด์ผ ํฉ๋๋ค.
SELECT INS.NAME, INS.DATETIME
FROM ANIMAL_INS INS
LEFT JOIN ANIMAL_OUTS OUTS
ON INS.ANIMAL_ID = OUTS.ANIMAL_ID
WHERE OUTS.ANIMAL_ID IS NULL
ORDER BY INS.DATETIME
LIMIT 3
์์ง ์ ์์ ๋ชป๊ฐ ๋๋ฌผ ๋ฐ์ดํฐ๋ INS ํ ์ด๋ธ์๋ ์์ง๋ง, OUTS ํ ์ด๋ธ์๋ ์กด์ฌํ์ง ์๋๋ค.
OUTS ํ ์ด๋ธ์๋ ์ ์์ด ๋ ๋๋ฌผ๋ค๋ง ์๊ธฐ ๋๋ฌธ์ INS ํ ์ด๋ธ์ ๊ธฐ์ค์ผ๋ก
LEFT JOIN์ ์ํํ๊ณ , ์ ์ ๊ธฐ๋ก์ด ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ณดํธ ์์์ผ์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๋ค.
๊ทธ๋ฆฌ๊ณ 3๊ฐ๋ง ์กฐํํ๋ค!
4. ๋ณดํธ์์์ ์ค์ฑํํ ๋๋ฌผ
๋ณดํธ์์์ ์ค์ฑํ ์์ ์ ๊ฑฐ์น ๋๋ฌผ ์ ๋ณด๋ฅผ ์์๋ณด๋ ค ํฉ๋๋ค.
๋ณดํธ์์ ๋ค์ด์ฌ ๋น์์๋ ์ค์ฑํ1๋์ง ์์์ง๋ง, ๋ณดํธ์๋ฅผ ๋๊ฐ ๋น์์๋
์ค์ฑํ๋ ๋๋ฌผ์ ์์ด๋์ ์๋ฌผ ์ข , ์ด๋ฆ์ ์กฐํํ๋ ์์ด๋ ์์ผ๋ก ์กฐํํ๋ SQL ๋ฌธ์ ์์ฑํด์ฃผ์ธ์.
SELECT INS.ANIMAL_ID, INS.ANIMAL_TYPE, INS.NAME
FROM ANIMAL_INS INS JOIN ANIMAL_OUTS OUTS
WHERE INS.ANIMAL_ID = OUTS.ANIMAL_ID AND INS.SEX_UPON_INTAKE != OUTS.SEX_UPON_OUTCOME
ORDER BY INS.ANIMAL_ID
INNER JOIN ์ฌ์ฉ
๋ด๋ถ ์กฐ์ธ์ ๋ ์ด์์ ํ ์ด๋ธ์ ์กด์ฌํ๋ ๊ณตํต ์์ฑ์ ๊ฐ์ด ๊ฐ์ ๊ฒ์ ๊ฒฐ๊ณผ๋ก ์ถ์ถํ๋ค.
๋ฐ๋ผ์ ๊ฐ์ ๋๋ฌผ ์์ด๋๋ฅผ ๊ฐ์ง ๋ฐ์ดํฐ๋ผ๋ฆฌ JOIN ํ๋ฉด
์ค์ฑํ ๊ฐ์ ๋น๊ตํ ์ ์๊ฒ ๋๋ค. INS ์ค์ฑํ ๊ฐ๊ณผ OUTS ์ค์ฑํ ๊ฐ์ด ๋ค๋ฅธ ๋๋ฌผ์ ์กฐํ
'Algorithm > CodingTest - SQL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
SQL) ํ๋ก๊ทธ๋๋จธ์ค SQL ๊ณ ๋์ Kit - IS NULL (0) | 2022.04.15 |
---|---|
SQL) ํ๋ก๊ทธ๋๋จธ์ค SQL ๊ณ ๋์ kit - GROUP BY (0) | 2022.04.15 |
SQL) ํ๋ก๊ทธ๋๋จธ์ค SQL ๊ณ ๋์ Kit - SUM, MIN, MAX (0) | 2022.04.15 |
SQL) ํ๋ก๊ทธ๋๋จธ์ค SQL ๊ณ ๋์ Kit - Select (10) | 2022.04.15 |