🦾 오늘의 컨디션 및 특이사항(개인 일정 등)
- 수면 시간
- 학습 시간
- 10 : 30 ~ 14 : 00
- 22 : 00 ~ 00 : 00
- 특이사항
📑 세부 학습 내용
📅 스케쥴
- 3시간 30분 강의 + 궁금한 개념 조사 및 학습 + 2시간 코딩테스트 및 풀이 리뷰
- 총 5시간 30분
📺 인프런 강의
📺 김영한의 실전 데이터베이스 - 기본편 (김영한)
- 데이터를 처리하기 위한 SQL 문법을 확실하게 마스터하는 것과 더불어, 특히 조인 및 인덱스의 정의 및 올바른 사용 방법을 확실하게 이해하여 쿼리 성능을 최적화 - 극대화할 수 있는 개발자로 성장하고, 추가로 데이터베이스에서의 트랜잭션 관련도 더 확실하게 이해하여 DB 쿼리 성능을 최대한 최적화 할 수 있는 성능에 민감한 개발자를 목표로 학습 시작
- 45. 뷰(View) 소개 ~ 57. 인덱스와 LIKE 범위 검색 까지 학습 완료
- 과정의 모든 내용 이해 및 실습 완료
- 강의 내 퀴즈 모두 풀이 및 오답노트
- 강의에 없는 내용 중 이해가 안 되거나 궁금한 부분은 따로 추가 학습 진행
- 이전 내용 중 헷갈리는 부분 복습하면서 진행
✏️ 코딩 테스트
⭕ 풀이 코드
WITH recursive jt AS (
SELECT id, parent_id, 1 AS generation
FROM ecoli_data
WHERE parent_id IS NULL
UNION ALL
SELECT ne.id, ne.parent_id, jt.generation + 1
FROM ecoli_data ne
JOIN jt ON jt.id = ne.parent_id
),
njt AS (
SELECT pe.id
FROM ecoli_data pe
LEFT JOIN ecoli_data ce ON pe.id = ce.parent_id
WHERE ce.id IS NULL
)
SELECT COUNT(jt.generation) as COUNT, jt.generation AS GENERATION
FROM jt
JOIN njt ON jt.id = njt.id
GROUP BY jt.generation
ORDER BY jt.generation ASC;
- 재귀 CTE 를 이용해 해결
WITH recursive {tableName} AS {query} 구문을 통해 재귀 CTE 생성 : jt
- 각 세대별 자식이 있는 노드 ID 분리 및 획득
- 단순 서브쿼리를 담고 있는 CTE 추가 생성 :
njt
- 두 테이블을 모두 이용하여
GROUP BY jt.GENERATION 으로 세대별 COUNT 쿼리 실행
💡 어려웠던 것 || 알게 된 것