관리 메뉴

JIE0025

[HackerRank][MYSQL] The Report 본문

Algorithm/HackerRank

[HackerRank][MYSQL] The Report

Kangjieun11 2022. 5. 27. 20:45
728x90

www.hackerrank.com/challenges/the-report/problem

 

The Report | HackerRank

Write a query to generate a report containing three columns: Name, Grade and Mark.

www.hackerrank.com

 

 

문제

 

 

 

 

 

 

1. students, grades 라는 테이블이 존재함.

2. students 에는 id, name, marks 라는 열이 존재함.

3. grades에는  grade, min_mark , max_mark라는 열이 존재함.

4. sample input으로 students 테이블이 들어옴.

 

 

## 문제가 너무 길어서 뒤에부분은 그냥 번역기 돌렸다. ##

 

- Ketty는 Eve에게 name, grade 및 mark라는 세 개의 열이 포함된 보고서를 생성하는 작업을 제공합니다.

 

- Ketty는 8등급 미만을 받은 학생의 이름을 원하지 않습니다.

보고서는 등급별로 내림차순으로 작성해야 합니다.

즉, 더 높은 등급이 먼저 입력됩니다.

 

- 같은 학년(8-10)이 배정된 학생이 한 명 이상인 경우 해당 학생의 이름을 알파벳순으로 정렬합니다.

 

- 마지막으로 등급이 8보다 낮으면 "NULL"을 이름으로 사용하고

등급별로 내림차순으로 나열합니다.

 

- 같은 학년(1-7)이 배정된 학생이 한 명 이상인 경우 해당 학생의 점수를 오름차순으로 정렬합니다.

 


Eve를 돕기 위해 쿼리를 작성하십시오.

 

 


 

 

이 문제를 공유한 이유

 

이 문제가 특이한점은 join을 하고 join조건으로 between을 사용했다는 점이다. 

조인 조건으로 열의 정보가 일치할 경우

 

select *

from a

join b

on a.column = b.column

 

이런 것만 많이 사용했어서 아주 생소했다. 

 

 

 s.marks의 값이 between g.min_mark and g.max_mark 가 같은 것으로 묶어주는... 

 

확실하게 이해는 안가는데 무슨 느낌인지만 알 것같다. 

 

 

 

mysql 사전

if (조건문, true, false )
-- 조건이 참일 때 true에 있는 값, 거짓일 때 false에 있는 값을 조회.

order by 열 desc 
-- 내림차순

order by 열 
-- 오름차순 

order by 열1, 열2, 열3 desc, 열4
-- 정렬조건 우선순위 1 > 2 > 3(내림차순) > 4

 

 

정답 코드

SELECT IF(G.GRADE >= 8, S.NAME, 'NULL'), G.GRADE, S.MARKS
FROM STUDENTS S
INNER JOIN GRADES G
ON S.MARKS BETWEEN G.MIN_MARK AND G.MAX_MARK
ORDER BY G.GRADE DESC , S.NAME, S.MARKS

'Algorithm > HackerRank' 카테고리의 다른 글

[HackerRank][MYSQL] Average Population of Each Continent  (0) 2022.05.27