일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 코틀린
- 정보처리산업기사
- 백준 알고리즘
- 코딩봉사
- 문제풀이
- CJ UNIT
- java
- MYSQL
- 프로그래머스
- 알고리즘
- SW봉사
- 코딩교육봉사
- 소프티어
- BFS
- 공부일지
- 자바
- 회고
- 파이썬
- 스프링
- C++
- softeer
- programmers
- 데이터베이스
- 시나공
- 1과목
- 백준알고리즘
- 백준
- python
- SQL
- kotlin
- Today
- Total
JIE0025
[HackerRank][MYSQL] The Report 본문
www.hackerrank.com/challenges/the-report/problem
문제
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 |
---|