KATA는 기술과 기술 향상에 초점을 맞춘 코드 챌린지입니다.
일부는 프로그래밍 기본 사항을 교육하는 반면 다른 일부는 복잡한 문제 해결에 중점을 둡니다.
이 용어는 The Pragmatic Programmer 라는 책의 공동 저자인 Dave Thomas 가
무술에서 일본의 카타 개념을 인정하면서 처음 만들어졌습니다.
Dave의 개념 버전은 코드 카타를 프로그래머가
연습과 반복을 통해 기술을 연마하는 데 도움이 되는 프로그래밍 연습으로 정의합니다.
STUDENTS TABLE :
GRADES TABLE :
문제
Name, Grade, Mark 칼럼으로 이뤄진 보고서를 생성하는 쿼리 작성
아래 표시 조건에 따라 학생 이름을 표시하지 않아야 하고,
정렬 조건에 따라 정렬해야 한다.
학생 이름 표시 조건
:
등급이 8 이상인 경우 학생 이름 표시,
등급이 8 미만인 경우 학생 이름 "NULL"로 표시
정렬 조건
:
1. 등급에 따라 내림차순으로 정렬합니다.
2. 등급이 동일한 경우,
2-1. 등급이 8 이상인 학생은 이름 알파벳순 정렬
2-2. 등급이 8 미만인 학생은 점수(Mark) 오름차순 정렬
✔️ 제출 쿼리
✔️ 쿼리 분석
SELECT CASE WHEN G.GRADE >= 8 THEN S.NAME
ELSE 'NULL'
END NAME,
G.GRADE,
S.MARKS
FROM STUDENTS S JOIN GRADES G
ON S.MARKS BETWEEN G.MIN_MARK AND G.MAX_MARK
ORDER BY G.GRADE DESC,
CASE WHEN G.GRADE >= 8 THEN S.NAME
ELSE S.MARKS
END,
S.MARKS
쿼리 작동 세부 내용 정리
# 등급에 따라 학생 이름 반환, 8 이상은 학생 이름, 미만은 'NULL'
CASE WHEN G.GRADE >= 8 THEN S.NAME
ELSE 'NULL'
END NAME :
등급이 8 이상인 경우 학생 이름 반환,
그렇지 않은 경우 'NULL' 반환
G.GRADE :
GRADES 테이블의 등급 반환
S.MARKS :
STUDENTS 테이블의 점수 반환
# STUDENTS 테이블과 GRADES 테이블 조건부 조인
FROM STUDENTS S JOIN GRADES G
ON S.MARKS BETWEEN G.MIN_MARK AND G.MAX_MARK :
STUDENTS 테이블의 점수가
GRADES 테이블의 점수 범위에 있는 경우에 조인
# 결과 정렬
ORDER BY G.GRADE DESC, :
등급 내림차순 정렬
CASE WHEN G.GRADE >= 8 THEN S.NAME
ELSE S.MARKS
END, :
등급이 8 이상인 경우 이름을 알파벳순으로 정렬,
등급이 8 미만인 경우 점수를 오름차순으로 정렬
S.MARKS :
앞선 조건이 모두 동일할 경우,
점수 오름차순 정렬
JOIN 절
# STUDENTS 테이블과 GRADES 테이블 조건부 조인
FROM STUDENTS S JOIN GRADES G
ON S.MARKS BETWEEN G.MIN_MARK AND G.MAX_MARK :
STUDENTS 테이블의 점수가
GRADES 테이블의 점수 범위에 있는 경우에 조인