π― Coding Test/SQL ν
μ€νΈ
νλ‘κ·Έλλ¨Έμ€ (Lv 2) - ROOT μμ΄ν ꡬνκΈ°
Dev_sHu
2024. 4. 1. 01:40
1) λ¬Έμ μ€λͺ
- μ΄λ ν κ²μμμ μ¬μ©λλ μμ΄ν λ€μ μ κ·Έλ μ΄λκ° κ°λ₯ν©λλ€.
- 'ITEM_A'->'ITEM_B'μ κ°μ΄ μ κ·Έλ μ΄λκ° κ°λ₯ν λ 'ITEM_A'λ₯Ό 'ITEM_B'μ PARENT μμ΄ν ,PARENT μμ΄ν μ΄ μλ μμ΄ν μ ROOT μμ΄ν μ΄λΌκ³ ν©λλ€.
- μλ₯Ό λ€μ΄ 'ITEM_A'->'ITEM_B'->'ITEM_C' μ κ°μ΄ μ κ·Έλ μ΄λκ° κ°λ₯ν μμ΄ν μ΄ μλ€λ©΄ 'ITEM_C'μ PARENT μμ΄ν μ 'ITEM_B' 'ITEM_B'μ PARENT μμ΄ν μ 'ITEM_A' ROOT μμ΄ν μ 'ITEM_A'κ° λ©λλ€.
- λ€μμ ν΄λΉ κ²μμμ μ¬μ©λλ μμ΄ν μ 보λ₯Ό λ΄μ ITEM_INFO ν μ΄λΈκ³Ό μμ΄ν κ΄κ³λ₯Ό λνλΈ ITEM_TREE ν μ΄λΈμ λλ€.
- ITEM_INFO ν μ΄λΈμ λ€μκ³Ό κ°μΌλ©°, ITEM_ID, ITEM_NAME, RARITY, PRICEλ κ°κ° μμ΄ν ID, μμ΄ν λͺ , μμ΄ν μ ν¬κ·λ, μμ΄ν μ κ°κ²©μ λνλ λλ€.
Column name | Type | Nullable |
ITEM_ID | INTEGER | FALSE |
ITEM_NAME | VARCHAR(N) | FALSE |
RARITY | INTEGER | FALSE |
PRICE | INTEGER | FALSE |
- ITEM_TREE ν μ΄λΈμ λ€μκ³Ό κ°μΌλ©°, ITEM_ID, PARENT_ITEM_IDλ κ°κ° μμ΄ν ID, PARENT μμ΄ν μ IDλ₯Ό λνλ λλ€.
Column name | Type | Nullable |
ITEM_ID | INTEGER | FALSE |
PARENT_ITEM_ID | INTEGER | TRUE |
- λ¨, κ° μμ΄ν λ€μ μ€μ§ νλμ PARENT μμ΄ν IDλ₯Ό κ°μ§λ©°, ROOT μμ΄ν μ PARENT μμ΄ν IDλ NULL μ λλ€.
- ROOT μμ΄ν μ΄ μλ κ²½μ°λ μ‘΄μ¬νμ§ μμ΅λλ€.
2) λ¬Έμ
- ROOT μμ΄ν μ μ°Ύμ μμ΄ν ID(ITEM_ID), μμ΄ν λͺ (ITEM_NAME)μ μΆλ ₯νλ SQLλ¬Έμ μμ±ν΄ μ£ΌμΈμ.
- μ΄ λ, κ²°κ³Όλ μμ΄ν IDλ₯Ό κΈ°μ€μΌλ‘ μ€λ¦μ°¨μ μ λ ¬ν΄ μ£ΌμΈμ.
3) μμ
- μλ₯Ό λ€μ΄ ITEM_INFO ν μ΄λΈμ΄ λ€μκ³Ό κ°κ³
ITEM_ID | ITEM_NAME | RARITY | PRICE |
0 | ITEM_A | COMMON | 10000 |
1 | ITEM_B | LEGEND | 9000 |
2 | ITEM_C | LEGEND | 11000 |
3 | ITEM_D | UNIQUE | 10000 |
4 | ITEM_E | LEGEND | 12000 |
- ITEM_TREE ν μ΄λΈμ΄ λ€μκ³Ό κ°λ€λ©΄
ITEM_ID | PARENT_ITEM_ID |
0 | NULL |
1 | 0 |
2 | 0 |
3 | NULL |
4 | 3 |
- ROOT μμ΄ν μ μμ΄ν IDλ PARENT μμ΄ν ID(PARENT_ITEM_ID)κ° NULL μΈ 0, 3 μ΄λ―λ‘ SQLλ¬Έμ μ€ννλ©΄ λ€μκ³Ό κ°μ κ²°κ³Όκ° λμμΌ ν©λλ€.
ITEM_ID | ITEM_NAME |
0 | ITEM_A |
3 | ITEM_D |
4) νμ΄
SELECT ITEM_ID, ITEM_NAME
FROM ITEM_INFO
WHERE ITEM_ID IN (SELECT ITEM_ID
FROM ITEM_TREE
WHERE PARENT_ITEM_ID IS NULL)
ORDER BY ITEM_ID ASC;
[Reference]
νλ‘κ·Έλλ¨Έμ€
μ½λ μ€μ¬μ κ°λ°μ μ±μ©. μ€ν κΈ°λ°μ ν¬μ§μ λ§€μΉ. νλ‘κ·Έλλ¨Έμ€μ κ°λ°μ λ§μΆ€ν νλ‘νμ λ±λ‘νκ³ , λμ κΈ°μ κΆν©μ΄ μ λ§λ κΈ°μ λ€μ λ§€μΉ λ°μΌμΈμ.
programmers.co.kr
λ°μν