[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋ถ€๋ชจ์˜ ํ˜•์งˆ์„ ๋ชจ๋‘ ๊ฐ€์ง€๋Š” ๋Œ€์žฅ๊ท  ์ฐพ๊ธฐ/MySQL - Lv.2

2024. 10. 31. 18:22ยทCoding Test/SQL

โ“๋ฌธ์ œ

https://school.programmers.co.kr/learn/courses/30/lessons/301647

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก, ์ฑ„์šฉ๊นŒ์ง€ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr

๋ฌธ์ œ ์„ค๋ช…

๋Œ€์žฅ๊ท ๋“ค์€ ์ผ์ • ์ฃผ๊ธฐ๋กœ ๋ถ„ํ™”ํ•˜๋ฉฐ, ๋ถ„ํ™”๋ฅผ ์‹œ์ž‘ํ•œ ๊ฐœ์ฒด๋ฅผ ๋ถ€๋ชจ ๊ฐœ์ฒด, ๋ถ„ํ™”๊ฐ€ ๋˜์–ด ๋‚˜์˜จ ๊ฐœ์ฒด๋ฅผ ์ž์‹ ๊ฐœ์ฒด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
๋‹ค์Œ์€ ์‹คํ—˜์‹ค์—์„œ ๋ฐฐ์–‘ํ•œ ๋Œ€์žฅ๊ท ๋“ค์˜ ์ •๋ณด๋ฅผ ๋‹ด์€ ECOLI_DATA ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค. ECOLI_DATA ํ…Œ์ด๋ธ”์˜ ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์œผ๋ฉฐ, ID, PARENT_ID, SIZE_OF_COLONY, DIFFERENTIATION_DATE, GENOTYPE ์€ ๊ฐ๊ฐ ๋Œ€์žฅ๊ท  ๊ฐœ์ฒด์˜ ID, ๋ถ€๋ชจ ๊ฐœ์ฒด์˜ ID, ๊ฐœ์ฒด์˜ ํฌ๊ธฐ, ๋ถ„ํ™”๋˜์–ด ๋‚˜์˜จ ๋‚ ์งœ, ๊ฐœ์ฒด์˜ ํ˜•์งˆ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

Column name Type Nullable
ID INTEGER FALSE
PARENT_ID INTEGER TRUE
SIZE_OF_COLONY INTEGER FALSE
DIFFERENTIATION_DATE DATE FALSE
GENOTYPE INTEGER FALSE

์ตœ์ดˆ์˜ ๋Œ€์žฅ๊ท  ๊ฐœ์ฒด์˜ PARENT_ID ๋Š” NULL ๊ฐ’์ž…๋‹ˆ๋‹ค.


๋ฌธ์ œ

๋ถ€๋ชจ์˜ ํ˜•์งˆ์„ ๋ชจ๋‘ ๋ณด์œ ํ•œ ๋Œ€์žฅ๊ท ์˜ ID(ID), ๋Œ€์žฅ๊ท ์˜ ํ˜•์งˆ(GENOTYPE), ๋ถ€๋ชจ ๋Œ€์žฅ๊ท ์˜ ํ˜•์งˆ(PARENT_GENOTYPE)์„ ์ถœ๋ ฅํ•˜๋Š” SQL ๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ์ด๋•Œ ๊ฒฐ๊ณผ๋Š” ID์— ๋Œ€ํ•ด ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•ด์ฃผ์„ธ์š”.


์˜ˆ์‹œ

์˜ˆ๋ฅผ ๋“ค์–ด ECOLI_DATA ํ…Œ์ด๋ธ”์ด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค๋ฉด

ID PARENT_ID SIZE_OF_COLONY DIFFERENTIATION_DATE GENOTYPE
1 NULL 10 2019/01/01 1
2 1 2 2019/01/01 1
3 1 100 2020/01/01 3
4 2 16 2020/01/01 2
5 4 17 2020/01/01 8
6 3 101 2021/01/01 5
7 2 101 2022/01/01 5
8 6 1 2022/01/01 13

๊ฐ ๋Œ€์žฅ๊ท  ๋ณ„ ํ˜•์งˆ์„ 2์ง„์ˆ˜๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ID 1 : 1โ‚โ‚‚โ‚Ž
ID 2 : 1โ‚โ‚‚โ‚Ž
ID 3 : 11โ‚โ‚‚โ‚Ž
ID 4 : 10โ‚โ‚‚โ‚Ž
ID 5 : 1000โ‚โ‚‚โ‚Ž
ID 6 : 101โ‚โ‚‚โ‚Ž
ID 7 : 101โ‚โ‚‚โ‚Ž
ID 8 : 1101โ‚โ‚‚โ‚Ž

๊ฐ ๋Œ€์žฅ๊ท  ๋ณ„ ๋ณด์œ ํ•œ ํ˜•์งˆ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ID 1 : 1
ID 2 : 1
ID 3 : 1, 2
ID 4 : 2
ID 5 : 4
ID 6 : 1, 3
ID 7 : 1, 3
ID 8 : 1, 3, 4

๊ฐ ๊ฐœ์ฒด๋ณ„๋กœ ์‚ดํŽด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ID 1 : ์ตœ์ดˆ์˜ ๋Œ€์žฅ๊ท  ๊ฐœ์ฒด์ด๋ฏ€๋กœ ๋ถ€๋ชจ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
ID 2 : ๋ถ€๋ชจ๋Š” ID 1 ์ด๋ฉฐ ๋ถ€๋ชจ์˜ ํ˜•์งˆ์ธ 1๋ฒˆ ํ˜•์งˆ์„ ๋ณด์œ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
ID 3 : ๋ถ€๋ชจ๋Š” ID 1 ์ด๋ฉฐ ๋ถ€๋ชจ์˜ ํ˜•์งˆ์ธ 1๋ฒˆ ํ˜•์งˆ์„ ๋ณด์œ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
ID 4 : ๋ถ€๋ชจ๋Š” ID 2 ์ด๋ฉฐ ๋ถ€๋ชจ์˜ ํ˜•์งˆ์ธ 1๋ฒˆ ํ˜•์งˆ์„ ๋ณด์œ ํ•˜๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
ID 5 : ๋ถ€๋ชจ๋Š” ID 4 ์ด๋ฉฐ ๋ถ€๋ชจ์˜ ํ˜•์งˆ์ธ 2๋ฒˆ ํ˜•์งˆ์„ ๋ณด์œ ํ•˜๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
ID 6 : ๋ถ€๋ชจ๋Š” ID 3 ์ด๋ฉฐ ๋ถ€๋ชจ์˜ ํ˜•์งˆ 1, 2๋ฒˆ ์ค‘ 2 ๋ฒˆ ํ˜•์งˆ์„ ๋ณด์œ ํ•˜๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
ID 7 : ๋ถ€๋ชจ๋Š” ID 2 ์ด๋ฉฐ ๋ถ€๋ชจ์˜ ํ˜•์งˆ์ธ 1๋ฒˆ ํ˜•์งˆ์„ ๋ณด์œ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
ID 8 : ๋ถ€๋ชจ๋Š” ID 6 ์ด๋ฉฐ ๋ถ€๋ชจ์˜ ํ˜•์งˆ 1, 3๋ฒˆ์„ ๋ชจ๋‘ ๋ณด์œ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋ถ€๋ชจ์˜ ํ˜•์งˆ์„ ๋ชจ๋‘ ๋ณด์œ ํ•œ ๊ฐœ์ฒด๋Š” ID 2, ID 3, ID 7, ID 8 ์ด๋ฉฐ ๊ฒฐ๊ณผ๋ฅผ ID ์— ๋Œ€ํ•ด ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ID GENOTYPE PARENT_GENOTYPE
2 1 1
3 3 1
7 5 1
8 13 5

โœ๐Ÿปํ’€์ด

๋Œ€์žฅ๊ท ์˜ ํ˜•์งˆ๊ณผ ๋ถ€๋ชจ ๋Œ€์žฅ๊ท ์˜ ํ˜•์งˆ์„ ๊ฐ๊ฐ ์ด์ง„์ˆ˜๋กœ ๋‚˜ํƒ€๋ƒˆ์„ ๋•Œ, ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

ID BINARY BIT PARENT ID BINARY BIT RESULT PARENT GENOTYPE
2 1 1 1 1 1
3 11 1 1 1 1
4 10 2 1 0 1
5 1000 4 10 0 2
6 101 3 11 1 3
7 101 2 1 1 1
8 1101 6 101 5 5

์ด ๋•Œ, ๋ถ€๋ชจ์˜ ํ˜•์งˆ์„ ๋ชจ๋‘ ๊ฐ–๊ณ  ์žˆ์–ด์•ผ ํ•˜๋ฏ€๋กœ '๋น„ํŠธ ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋ถ€๋ชจ ํ˜•์งˆ์˜ ๊ฐ’๊ณผ ๊ฐ™๋‹ค'๋ผ๋Š” ์กฐ๊ฑด์— ๋งž์•„์•ผ ํ•œ๋‹ค.
ID 6์„ ๋ณด๋ฉด ๊ฒฐ๊ณผ์™€ ๋ถ€๋ชจ ํ˜•์งˆ์ด 1 != 3์œผ๋กœ ID 6์€ ๋ถ€๋ชจ์˜ ๋ชจ๋“  ํ˜•์งˆ์„ ๋‹ค ๊ฐ™์ง€ ์•Š์Œ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. 

๐Ÿ’ป์ฝ”๋“œ

select a.id, a.genotype, b.genotype as parent_genotype
from ecoli_data a join ecoli_data b on a.parent_id = b.id
where b.genotype&a.genotype = b.genotype
order by a.id

๐Ÿ’ก์ƒˆ๋กœ ๋ฐฐ์šด ๋‚ด์šฉ

๋น„ํŠธ ์—ฐ์‚ฐ์ž ์„ค๋ช…
& ๋Œ€์‘๋˜๋Š” bit๊ฐ€ ๋ชจ๋‘ 1์ด๋ฉด 1์„ ๋ฐ˜ํ™˜. (AND ์—ฐ์‚ฐ)
| ๋Œ€์‘๋˜๋Š” bit ์ค‘ ํ•˜๋‚˜๋ผ๋„ 1์ด๋ฉด 1์„ ๋ฐ˜ํ™˜. (OR ์—ฐ์‚ฐ)
^ ๋Œ€์‘๋˜๋Š” bit๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅด๋ฉด 1์„ ๋ฐ˜ํ™˜. (XOR ์—ฐ์‚ฐ)
~ bit๋ฅผ ๋ฐ˜์ „์‹œํ‚ด. 1์ด๋ฉด 0, 0์ด๋ฉด 1๋กœ. (NOT ์—ฐ์‚ฐ)
>> N N๋งŒํผ bit๋ฅผ ์ „๋ถ€ ์™ผ์ชฝ์œผ๋กœ ์ด๋™์‹œํ‚ด. (Left Shift ์—ฐ์‚ฐ)
<< N N๋งŒํผ bit๋ฅผ ์ „๋ถ€ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™์‹œํ‚ด. (Right Shift ์—ฐ์‚ฐ)

๐Ÿ“ํ›„๊ธฐ

์ฒ˜์Œ์— ์ž์‹ ํ˜•์งˆ&๋ถ€๋ชจ ํ˜•์งˆ๊นŒ์ง€๋Š” ์ƒ๊ฐํ–ˆ์ง€๋งŒ ๋ถ€๋ชจ ํ˜•์งˆ์„ ๋ชจ๋‘ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ์กฐ๊ฑด์„ ์–ด๋–ป๊ฒŒ ํ‘œํ˜„ํ•ด์•ผ ํ• ์ง€ ์ƒ๊ฐํ•˜์ง€ ๋ชปํ–ˆ๋‹ค. ๊ทธ๋ƒฅ ๊ฒฐ๊ณผ๊ฐ€ ๋ถ€๋ชจ ํ˜•์งˆ๊ฐ€ ๊ฐ™๋‹ค๊ณ  ํ•˜๋ฉด ๋๋Š”๋ฐ...

์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'Coding Test > SQL' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋Œ€์žฅ๊ท ์˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ ๋ถ„๋ฅ˜ํ•˜๊ธฐ2/MySQL - Lv.3  (0) 2024.10.31
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์กฐ๊ฑด์— ๋งž๋Š” ๊ฐœ๋ฐœ์ž ์ฐพ๊ธฐ/MySQL - Lv.2  (1) 2024.10.31
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋ฌผ๊ณ ๊ธฐ ์ข…๋ฅ˜ ๋ณ„ ๋Œ€์–ด ์ฐพ๊ธฐ/MySQL - Lv.3  (1) 2024.10.29
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์šฐ์œ ์™€ ์š”๊ฑฐํŠธ๊ฐ€ ๋‹ด๊ธด ์žฅ๋ฐ”๊ตฌ๋‹ˆ/MySQL - Lv.4  (0) 2024.09.29
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์กฐ๊ฑด์— ๋งž๋Š” ์‚ฌ์šฉ์ž ์ •๋ณด ์กฐํšŒํ•˜๊ธฐ/MySQL - Lv.3  (2) 2024.09.28
'Coding Test/SQL' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋Œ€์žฅ๊ท ์˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ ๋ถ„๋ฅ˜ํ•˜๊ธฐ2/MySQL - Lv.3
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์กฐ๊ฑด์— ๋งž๋Š” ๊ฐœ๋ฐœ์ž ์ฐพ๊ธฐ/MySQL - Lv.2
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋ฌผ๊ณ ๊ธฐ ์ข…๋ฅ˜ ๋ณ„ ๋Œ€์–ด ์ฐพ๊ธฐ/MySQL - Lv.3
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์šฐ์œ ์™€ ์š”๊ฑฐํŠธ๊ฐ€ ๋‹ด๊ธด ์žฅ๋ฐ”๊ตฌ๋‹ˆ/MySQL - Lv.4
The Engineer, Lucy
The Engineer, Lucy
  • The Engineer, Lucy
    Growing up for My Future๐Ÿ’•
    The Engineer, Lucy
    • Instagram
    • GitHub
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (165) N
      • Computer Science (17)
        • Data Structure (0)
        • Algorithms (1)
        • Operating System (3)
        • Network (11)
        • Database System (2)
      • Coding Test (81) N
        • Algorithms (73) N
        • SQL (7)
      • Infra (8)
      • Cloud (22)
        • AWS (2)
        • GCP (3)
        • Docker (4)
        • Kubernetes (13)
      • Linux (26)
      • NGINX (1)
      • CICD (3)
      • IaC (2)
      • ETC (5)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๊ณต์ง€์‚ฌํ•ญ

  • ๋งํฌ

    • Lucy's Instagram
    • Lucy's GitHub
  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    bfs
    ๋ฐฑ์ค€
    Linux
    K8s
    dfs
    ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค
    ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ
    ๋„์ปค
    cs ๊ธฐ์ดˆ ์ง€์‹ ์ •๋ฆฌ
    ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๊ณต๋ถ€
    Java
    ์‰˜ ์Šคํฌ๋ฆฝํŠธ
    network
    docker
    Baekjoon
    ์…ธ ์Šคํฌ๋ฆฝํŠธ
    ๋„ˆ๋น„์šฐ์„ ํƒ์ƒ‰
    ๋ฆฌ๋ˆ…์Šค๋งˆ์Šคํ„ฐ
    ๋ฆฌ๋ˆ…์Šค๋งˆ์Šคํ„ฐ 2๊ธ‰
    programmers
    ์˜ค๋ธ”์™„
    Shell
    ๋„คํŠธ์›Œํฌ
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    Kubernetes
    ๋„คํŠธ์›Œํฌ ๊ธฐ์ดˆ ์ง€์‹
    ๋ฆฌ๋ˆ…์Šค
    ํ‹ฐ์Šคํ† ๋ฆฌ์ฑŒ๋ฆฐ์ง€
    Shell Script
    ์ž๋ฐ”
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
The Engineer, Lucy
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋ถ€๋ชจ์˜ ํ˜•์งˆ์„ ๋ชจ๋‘ ๊ฐ€์ง€๋Š” ๋Œ€์žฅ๊ท  ์ฐพ๊ธฐ/MySQL - Lv.2
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”