
방탈출 짱잼...
하루를 3일처럼 보내기 !
SQL
첫 번째 세대 선택SELECT ID , PARENT_ID , 1 AS Gen FROM ECOLI_DATA WHERE PARENT_ID IS NULL
- PARENT_ID가 NULL인 개체들을 선택하여 첫 번째 세대로 설정
- Gen 컬럼을 1로 설정하여 첫 번째 세대를 표시
재귀적으로 다음 세대 찾기
- UNION ALL을 사용하여 첫 번째 세대의 자식 개체들을 재귀적으로 찾고,
INNER JOIN Generation G ON E.PARENT_ID = G.ID를 사용하여
현재 세대의 ID를 부모 ID로 가지는 개체들을 찾기SELECT E.ID , E.PARENT_ID , G.Gen + 1 AS Gen FROM ECOLI_DATA E INNER JOIN Generation G ON E.PARENT_ID = G.ID
- 부모 ID가 이전 세대의 ID인 개체들을 찾아 세대를 하나씩 증가시키기
최종 결과 선택
- 각 세대별 부모 ID 가 존재하지 않는 개체를 찾고,
세대별 갯수 조회SELECT COUNT(G.ID) COUNT , G.GENERATION FROM Generation G WHERE G.ID NOT IN ( SELECT PARENT_ID FROM Generation WHERE PARENT_ID IS NOT NULL ) GROUP BY G.GENERATION ORDER BY G.GENERATION
- WHERE 조건절을 활용해 부모 ID 가 존재하지 않는 개체를 찾기
- 세대별로 그룹화하여 각 그룹별 ID의 갯수 조회
- 결과를 세대 오름차순으로 정렬하여 출력
오늘의 한 줄.
토요일 끝.