KATA는 기술과 기술 향상에 초점을 맞춘 코드 챌린지입니다.
일부는 프로그래밍 기본 사항을 교육하는 반면 다른 일부는 복잡한 문제 해결에 중점을 둡니다.
이 용어는 The Pragmatic Programmer 라는 책의 공동 저자인 Dave Thomas 가
무술에서 일본의 카타 개념을 인정하면서 처음 만들어졌습니다.
Dave의 개념 버전은 코드 카타를 프로그래머가
연습과 반복을 통해 기술을 연마하는 데 도움이 되는 프로그래밍 연습으로 정의합니다.
문제
주어진 세 개의 테이블에서, 학생의 가장 친한 친구가
학생보다 더 높은 급여 제안을 받은 학생의 이름 조회,
이름을 친구가 받은 급여 순 정렬
✔️ 제출 쿼리
✔️ 쿼리 분석
SELECT S1.Name
FROM Students S1
JOIN Friends F ON S1.ID = F.ID
# 학생과 그 학생의 가장 친한 친구 ID 조인
JOIN Packages P1 ON S1.ID = P1.ID
# 학생의 급여 제안 테이블 조인
JOIN Packages P2 ON F.Friend_ID = P2.ID
# 가장 친한 친구의 급여 제안 테이블 조인
WHERE P2.Salary > P1.Salary
# 친구의 급여가 더 높은 경우 필터링
ORDER BY P2.Salary
# 친구 급여 순 정렬
SELECT S1.Name
FROM Students S1
JOIN Friends F ON S1.ID = F.ID
# 학생과 그 학생의 가장 친한 친구 ID 조인
JOIN Packages P1 ON S1.ID = P1.ID
# 학생의 급여 제안 테이블 조인
JOIN Packages P2 ON F.Friend_ID = P2.ID
# 가장 친한 친구의 급여 제안 테이블 조인
WHERE P2.Salary > P1.Salary
# 친구의 급여가 더 높은 경우 필터링
ORDER BY P2.Salary
# 친구 급여 순 정렬
1. 학생-친구 관계 매칭
JOIN Friends F ON S1.ID = F.ID
Friends 테이블을 S1.ID = F.ID 조건으로 조인
각 학생의 가장 친한 친구를 찾음
2. 학생 급여 정보 조인
JOIN Packages P1 ON S1.ID = P1.ID
Packages 테이블을 S1.ID = P1.ID 조건으로 조인
각 학생의 급여 정보를 가져옴
3. 친구 급여 정보 조인
JOIN Packages P2 ON F.Friend_ID = P2.ID
Packages 테이블을 F.Friend_ID = P2.ID 조건으로 조인
각 친구의 급여 정보를 가져옴