TIL(24.07.27.)

codataffee·2024년 7월 27일

TIL

목록 보기
110/135
post-thumbnail

#INTRO

방탈출 짱잼...

하루를 3일처럼 보내기 !


#코드카타

  • KATA #98

  • SQL

    • CTE 생성 (WITH RECURSIVE 절)

첫 번째 세대 선택

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의 갯수 조회
  • 결과를 세대 오름차순으로 정렬하여 출력


#OUTRO

오늘의 한 줄.

토요일 끝.

profile
커피 좋아하는 데이터 꿈나무

0개의 댓글