KATA#76

codataffee·2024년 6월 29일
0

CODEKATA

목록 보기
76/114
post-thumbnail

WHAT IS KATA?

KATA는 기술과 기술 향상에 초점을 맞춘 코드 챌린지입니다.
일부는 프로그래밍 기본 사항을 교육하는 반면 다른 일부는 복잡한 문제 해결에 중점을 둡니다.

이 용어는 The Pragmatic Programmer 라는 책의 공동 저자인 Dave Thomas 가
무술에서 일본의 카타 개념을 인정하면서 처음 만들어졌습니다.
Dave의 개념 버전은 코드 카타를 프로그래머가
연습과 반복을 통해 기술을 연마하는 데 도움이 되는 프로그래밍 연습으로 정의합니다.


- SQL


✔️ 문제 #1: The Report

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

쿼리 작동 세부 내용 정리

  1. SELECT 절
# 등급에 따라 학생 이름 반환, 8 이상은 학생 이름, 미만은 'NULL'
CASE WHEN G.GRADE >= 8 THEN S.NAME
     ELSE 'NULL'
     END NAME :

등급이 8 이상인 경우 학생 이름 반환, 
그렇지 않은 경우 'NULL' 반환

G.GRADE :
GRADES 테이블의 등급 반환

S.MARKS :
STUDENTS 테이블의 점수 반환
  1. JOIN 절
# STUDENTS 테이블과 GRADES 테이블 조건부 조인
FROM STUDENTS S JOIN GRADES G
     ON S.MARKS BETWEEN G.MIN_MARK AND G.MAX_MARK :

STUDENTS 테이블의 점수가 
GRADES 테이블의 점수 범위에 있는 경우에 조인
  1. ORDER BY 절
# 결과 정렬
ORDER BY G.GRADE DESC, :
등급 내림차순 정렬

CASE WHEN G.GRADE >= 8 THEN S.NAME
     ELSE S.MARKS
     END, :

등급이 8 이상인 경우 이름을 알파벳순으로 정렬, 
등급이 8 미만인 경우 점수를 오름차순으로 정렬

S.MARKS :

앞선 조건이 모두 동일할 경우,
점수 오름차순 정렬

✔️ CHECK POINT

  • SQL
    조건부 조인 :

JOIN 절

# STUDENTS 테이블과 GRADES 테이블 조건부 조인
FROM STUDENTS S JOIN GRADES G
     ON S.MARKS BETWEEN G.MIN_MARK AND G.MAX_MARK :

STUDENTS 테이블의 점수가 
GRADES 테이블의 점수 범위에 있는 경우에 조인

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

0개의 댓글

관련 채용 정보