프로그래머스 SQL 코딩 테스트 문제 풀이를 해보자.
DBMS는 mysql 만 지원한다.
문제 : 특정 세대의 대장균 찾기
https://school.programmers.co.kr/learn/courses/30/lessons/301650
더보기
문제 설명
문제 해설
- 목표(이 문제를 풀면 아래 기능을 활용 할 수 있습니다.)
- MySQL 에서 recursive 형태 쿼리 작성하기(재귀함수)
- 풀이방법
- 이전 문제에서 봤던 `멸종위기의 대장균 찾기`와 유사한 문제로, 재귀함수를 사용 할 수 있는지 묻는 문제이다.
- 저번 문제보다도 쉽게 간단한 recursive 쿼리를 작성해주고 조건만 걸어주면 정답이 나온다!😁
(참고) 2024.07.09 - [CS/SQL 풀이] - [SQL풀이] 프로그래머스 - 멸종위기의 대장균 찾기
MySQL 풀이
with recursive CTE as (
-- 최상위 부모 정의
select id, parent_id, 1 as lvl
from ecoli_data
where parent_id is null
union all
-- 자식 정의
select c.id, c.parent_id, p.lvl +1
from CTE p inner join ecoli_data c on p.id = c.parent_id
)
select ID
from CTE
where lvl = 3;
맺음말
소스코드에 with 절의 이름을 `CTE`로 하였는데, CTE는 `Common Table Expression`의 약자로 with절을 다른말로 CTE로 통용해서 쓴다. 기존의 뷰나 임시 테이블 등을 간결하게 쿼리 내 표현 할 수 있는 장점이 있다. 저번에 풀어본 멸종위기의 대장균 찾기부터 두번째로 recursive cte 작성을 해봤는데, 비슷한 유형으로 크게 어렵지는 않은 문제였다.
반응형
'CS' 카테고리의 다른 글
PostgreSQL 인덱스 invisible 변경하기 (invisible index) (1) | 2024.08.02 |
---|---|
PostgreSQL tablespace 테이블스페이스 생성, 사용방법 정리 (0) | 2024.08.01 |
[PostgreSQL] pgbench 벤치마크 툴 사용방법, 성능 분석 (0) | 2024.07.10 |
[SQL풀이] 프로그래머스 - 멸종위기의 대장균 찾기 (0) | 2024.07.09 |
[SQL풀이] 프로그래머스 - 조건에 맞는 도서 리스트 출력하기 (0) | 2024.07.09 |
댓글