https://school.programmers.co.kr/learn/courses/30/lessons/301651
[문제]
각 세대별 자식이 없는 개체의 수(COUNT)와 세대(GENERATION)를 출력하는 SQL문을 작성해주세요. 이때 결과는 세대에 대해 오름차순 정렬해주세요. 단, 모든 세대에는 자식이 없는 개체가 적어도 1개체는 존재합니다.
[풀이]
with recursive tmp as (
select id, parent_id, 1 as generation
from ecoli_data
where parent_id is null
union all
select e.id, e.parent_id, tmp.generation + 1
from tmp join ecoli_data e
on tmp.id = e.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 2;
-참고
⭐WITH RECURSIVE란?
"WITH RECURSIVE는 SQL에서 재귀적(Common Table Expression, CTE) 을 정의하는 기능입니다. 재귀는 데이터를 반복적으로 참조하여 부모-자식 관계나 계층 구조(hierarchy)를 탐색할 때 사용됩니다."
SELECT *
FROM tmp
에 대한 결과로 아래가 출력됨
+ 다음 SELECT절
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 2;
=> 전체적인 흐름
'프로그래머스 > My SQL' 카테고리의 다른 글
언어별 개발자 분류하기 (0) | 2025.01.02 |
---|---|
FrontEnd 개발자 찾기 (0) | 2025.01.01 |
상품을 구매한 회원 비율 구하기 (1) | 2024.12.30 |
특정 세대의 대장균 찾기 (0) | 2024.12.29 |
연간 평가점수에 해당하는 평가 등급 및 성과금 조회하기 (1) | 2024.12.28 |