SQL 고득점 Kit - 9.12

김동현·2024년 9월 12일

SQL 고득점 Kit

목록 보기
54/56

SELECT - 특정 세대의 대장균 찾기

문제

3세대의 대장균의 ID(ID) 를 출력하는 SQL 문을 작성해주세요. 이때 결과는 대장균의 ID 에 대해 오름차순 정렬해주세요.

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

풀이

-- 2세대 자식을 찾기 : 2세대 자식이 3세대의 부모이기 때문
WITH second_child AS(
    SELECT e2.ID
    FROM ECOLI_DATA e1
    RIGHT JOIN ECOLI_DATA e2
    ON e1.ID = e2.PARENT_ID
    WHERE e1.PARENT_ID IS NULL AND e2.PARENT_ID IS NOT NULL 
)

SELECT e.ID
FROM second_child s
INNER JOIN ECOLI_DATA e
ON s.ID = e.PARENT_ID
ORDER BY e.ID

리뷰

  • 해당 문제는 함수, 쿼리 실력에 대한 문제보다 문제 해설 능력을 더 중요시 하는 문제라고 생각했다.
  • 문제는 셀프 조인으로 여러 번 조인을 통해 3세대를 찾는 방식으로 했는데 3세대를 찾기 위한 방법을 떠올리 수 있는가가 키워드 아닐까 생각해본다. (사실 쿼리 실력, 해독 능력 둘 다 아닌 거 같음 ㅋㅋㅋㅋㅋ 너무 쉽게 예시가 있어서 그냥 쿼리만 짜면 됨)
  • 2세대의 자식이 3세대의 부모이기 때문에 2세대의 자식을 찾는 방법만 생각해서 쿼리를 만들었다.
  • 다른 사람들은 recursive를 사용하던데 그건 특이하다고 생각했다.

GitHub

특정 세대의 대장균 찾기
https://github.com/lasentia/SQL_Study/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/4/301650.%E2%80%85%ED%8A%B9%EC%A0%95%E2%80%85%EC%84%B8%EB%8C%80%EC%9D%98%E2%80%85%EB%8C%80%EC%9E%A5%EA%B7%A0%E2%80%85%EC%B0%BE%EA%B8%B0

profile
'The best way to get started is to quit talking and begin doing.'

0개의 댓글