[SQL 문제 풀이] 멸종위기의 대장균 찾기

{재귀 쿼리}
Stupefyee's avatar
Dec 17, 2024
[SQL 문제 풀이] 멸종위기의 대장균 찾기
notion image

내가 작성한 쿼리

💡
with recursive tmp as ( select id, parent_id, 1 as generation from ecoli_data where parent_id is null union all select s.id, s.parent_id, tmp.generation + 1 from tmp join ecoli_data s on tmp.id = s.parent_id ) select count(*) count, generation from tmp where id not in ( select distinct parent_id from tmp where parent_id is not null) group by generation order by generation;

재귀 쿼리?

SQL에서 계층적 데이터를 처리하거나, 트리 구조를 탐색할 때 사용

재귀 쿼리의 주요 특징

  1. 자기참조: 결과 집합을 스스로 호출하여 점진적으로 확장
  1. 계층 구조 탐색: 부모-자식 관계 데이터를 처리
  1. CTE 사용: WITH RECURSIVE 구문을 활용하여 쿼리를 작성

기본 문법

WITH RECURSIVE cte_name AS ( -- Anchor 쿼리: 초기 결과 집합을 정의 초기_쿼리 UNION ALL -- Recursive 쿼리: 자신을 참조하여 추가 데이터를 가져옴 재귀_쿼리 ) SELECT * FROM cte_name;
  • Anchor 쿼리: 재귀의 시작점 (초기 데이터).
  • Recursive 쿼리: 자기 자신을 호출하여 점진적으로 결과를 확장.
  • 종료 조건: 재귀 쿼리의 WHERE 조건이 종료 조건 역할.
Share article

stupefyee