π― Coding Test/SQL ν
μ€νΈ
νλ‘κ·Έλλ¨Έμ€ (Lv 3) - μ κ·Έλ μ΄λ ν μ μλ μμ΄ν ꡬνκΈ°
Dev_sHu
2024. 3. 26. 17:23
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) λ¬Έμ
- λ μ΄μ μ κ·Έλ μ΄λν μ μλ μμ΄ν μ μμ΄ν ID(ITEM_ID), μμ΄ν λͺ (ITEM_NAME), μμ΄ν μ ν¬κ·λ(RARITY)λ₯Ό μΆλ ₯νλ SQL λ¬Έμ μμ±ν΄ μ£ΌμΈμ.
- μ΄λ κ²°κ³Όλ μμ΄ν IDλ₯Ό κΈ°μ€μΌλ‘ λ΄λ¦Όμ°¨μ μ λ ¬ν΄ μ£ΌμΈμ.
3) μμ
- μλ₯Ό λ€μ΄ ITEM_INFO ν μ΄λΈμ΄ λ€μκ³Ό κ°κ³
ITEM_ID | ITEM_NAME | RARITY | PRICE |
0 | ITEM_A | RARE | 10000 |
1 | ITEM_B | RARE | 9000 |
2 | ITEM_C | LEGEND | 11000 |
3 | ITEM_D | RARE | 10000 |
4 | ITEM_E | RARE | 12000 |
- ITEM_TREE ν μ΄λΈμ΄ λ€μκ³Ό κ°λ€λ©΄
ITEM_ID | PARENT_ITEM_ID |
0 | NULL |
1 | 0 |
2 | 0 |
3 | 1 |
4 | 1 |
- 'ITEM_A' λ 'ITEM_B', 'ITEM_C' λ‘ μ κ·Έλ μ΄λκ° κ°λ₯νλ©° 'ITEM_B' λ 'ITEM_D', 'ITEM_E' λ‘ μ κ·Έλ μ΄λκ° κ°λ₯ν©λλ€.
- 'ITEM_C', 'ITEM_D', 'ITEM_E' λ λ μ΄μ μ κ·Έλ μ΄λκ° κ°λ₯νμ§ μμΌλ―λ‘ κ²°κ³Όλ λ€μκ³Ό κ°μ΄ λμμΌ ν©λλ€.
ITEM_ID | ITEM_NAME | RARITY |
4 | ITEM_E | RARE |
3 | ITEM_D | RARE |
2 | ITEM_C | LEGEND |
4) νμ΄
SELECT
ITEM_ID,
ITEM_NAME,
RARITY
FROM ITEM_INFO
WHERE ITEM_ID NOT IN (SELECT DISTINCT PARENT_ITEM_ID
FROM ITEM_TREE
WHERE PARENT_ITEM_ID IS NOT NULL)
ORDER BY ITEM_ID DESC;
[Reference]
νλ‘κ·Έλλ¨Έμ€
μ½λ μ€μ¬μ κ°λ°μ μ±μ©. μ€ν κΈ°λ°μ ν¬μ§μ λ§€μΉ. νλ‘κ·Έλλ¨Έμ€μ κ°λ°μ λ§μΆ€ν νλ‘νμ λ±λ‘νκ³ , λμ κΈ°μ κΆν©μ΄ μ λ§λ κΈ°μ λ€μ λ§€μΉ λ°μΌμΈμ.
programmers.co.kr
λ°μν