반응형
오늘은 Hacker Rank 중에서 The Report 문제에 대한 간단한 번역과 해답에 대해서 요약하고자 한다. 해설은 MySQL과 Oracle에서 모두 작동하는 것으로 기록했고, 문제 풀이 과정에서 얻었던 내용을 오답노트로 기록하였다.
목차
1. 문제 출처 및 소개
2. 문제의 해답
3. 오답노트
1. 문제 출처 및 소개
- 문제의 출처: Hacker Rank The Report

- 문제의 요구 사항 정리
- 요구사항 1. Name, Grade, 그리고 Mark 순으로 Column을 반환
- 요구사항 2. Grade가 8 미만인 학생들의 이름은 'NULL"로 호출
- 요구사항 3. 순서는 Grade 내림차순, 이름의 알파벳 오름차순으로 정렬할 것
2. 문제의 해답
1
2
3
4
5
6
7
8
9
10
|
SELECT CASE WHEN b.Grade >= 8 THEN a.Name
WHEN b.Grade < 8 THEN 'NULL'
END AS name
, b.Grade
, a.Marks
FROM Students a
JOIN Grades b on a.Marks BETWEEN b.Min_Mark and b.Max_Mark
ORDER BY b.Grade DESC, a.Name ASC
;
|
cs |
문제 풀이 공략은 Student과 Grades Table을 JOIN 한 다음에 이름에 대한 전처리를 진행하는 것이었다. 조건 별로 다른 값을 호출해야 했기 때문에 CASE WHEN문을 활용하여 정답을 낼 수 있도록 유도하였다. 마지막으로 정렬 순서는 문제에서 요구한 대로 작성하여 문제를 풀어낼 수 있었다. 또한 이 해답은 MySQL과 Oracle 환경에서 모두 작동하니 자유롭게 활용해도 괜찮다.
3. 오답노트 - Lesson & Learn
사실 이 문제를 풀어낼 때 개인적으로 삽질을 하면서 시작하여 난이도가 쉽게 느껴지지만은 않았다. 개인적으로 겪었던 어려움과 이 문제에서 배워나갈 수 있는 Point로 생각되는 것들을 정리해보고자 한다.
- Lesson1. JOIN할 때 범위 값으로 할 수 있다.
- 개인적으로 어려움을 겪었던 내용이다. 실무에서는 거의 매번 key값을 기준으로 join을 했기 때문에 단순히 범위로 JOIN을 해도 된다는 사실을 떠올리지 못해서 헤매었었다.
- 코딩 테스트의 경우 다른 유형에서도 이런 상황을 볼 수 있으니 이번 오답노트를 통해서 기억하고자 한다.
- Lesson2. 조건 별로 다른 값을 요구하면 CASE WHEN 문을 활용해보자
- 이 함수는 거의 매일 쓰다시피 하는 문장이기 때문에 만약 이 조건을 몰랐다면 이번 기회에 학습을 하면 좋을 내용으로 보인다.
반응형
'SQL - Mysql & Oracle > SQL 실전 코딩 테스트' 카테고리의 다른 글
[MySQL] Hackerrank - SQL Project Planning 문제 풀이 해설 (0) | 2023.10.06 |
---|---|
[MySQL & Oracle]HackerRank - Occupations 해설 및 오답노트 (0) | 2023.09.27 |
SQL 코딩 테스트 오답노트 작성 요령(합격률 올리는 꿀팁!) (0) | 2023.09.23 |
데이터 분석가의 코딩테스트 대비 A to Z(feat. 예제, 사이트, 계획) (0) | 2023.09.02 |
[Oracle] 리트코드 176번 Second Highest Salary SQL코드 해설 (0) | 2022.09.07 |