일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- TF-IDF
- 컴파일러
- BM25
- NumPy
- 해시테이블
- 자료구조
- Compiler
- 오라클
- 코딩테스트
- streamlit
- 프로그래머스
- 코딩
- xla
- ML
- 컴파일언어
- 파이썬
- hackerrank
- sql
- Relation Extraction
- 인터프리터언어
- string 모듈
- 해시
- 프로그래밍
- 해커랭크
- 코테
- python
- 구름톤
- pandas
- 판다스
- Oracle
- Today
- Total
문제 링크
https://www.hackerrank.com/challenges/the-report/problem?isFullScreen=true
The Report | HackerRank
Write a query to generate a report containing three columns: Name, Grade and Mark.
www.hackerrank.com
케티는 이브에게 세 개의 열을 포함하는 보고서를 생성하는 작업을 준다 : 이름, 등급, 마크.
케티는 8점 이하의 점수를 받은 학생들의 이름을 원하지 않는다.
보고서는 등급별로 내림차순으로 작성되어야 합니다. 즉, 상위 등급이 먼저 입력됩니다.
동일한 등급(8-10)의 학생이 두 명 이상 있는 경우 해당 학생의 이름을 알파벳 순으로 정렬합니다.
마지막으로 등급이 8보다 낮으면 'NULL'을 이름으로 사용하고 등급별로 내림차순으로 나열한다.
같은 등급(1-7)의 학생이 두 명 이상 있는 경우 해당 학생의 점수를 오름차순으로 정렬합니다.
JOIN과 CASE문을 사용한 풀이
출력해야 할 칼럼은 name, grade, marks이다
name과 marks는 students 테이블에 속해있고, grade는 grades 테이블에 속해있다
이 칼럼들을 함께 출력하기 위해 JOIN이 필요하다
from students s join grades g
-- students 테이블과 grades 테이블을 조인하고 각 별칭을 s와 g로 준다
on s.marks between g.min_mark and g.max_mark
-- grades 테이블을 보면 각 등급별 최소 점수(min_mark) 칼럼과 최고 점수(max_mark) 칼럼이 있다는 것을 알 수 있다
-- 그렇다면 JOIN 조건을 학생들의 점수(marks)가 grades 테이블의 최소 점수와 최고 점수 사이에 있음을 조건으로 주면 된다
where s.marks > 8
-- 점수를 8점 이하로 받은 학생들의 이름을 제외시켜야 하기 때문에 where 절에 조건으로 준다
order by 2 desc, 1, 3
-- 보고서는 등급별로 내림차순(desc)되어야 하고, 동일한 등급(8-10)의 학생이 두 명 이상일 경우 학생 이름을 알파벳 순으로 정렬하고, 동일한 등급(1-7)의 학생이 두 명 이상일 경우 점수를 오름차순으로 정렬한다.
case when g.grade < 8 then null else s.name end
-- 등급이 8보다 낮으면 이름을 null로 출력되게 한다
'SQL' 카테고리의 다른 글
(HackerRank) 해커랭크 SQL [Type of Triangle] Oracle 풀이 (0) | 2021.12.03 |
---|---|
(HackerRank) 해커랭크 SQL [Top Competitors] Oracle 풀이 (0) | 2021.12.03 |
(HackerRank) 해커랭크 SQL [Higher Than 75 Marks] Oracle 풀이 (0) | 2021.12.02 |
(HackerRank) 해커랭크 SQL [Weather Observation Station 8] Oracle 풀이 (0) | 2021.12.02 |
(HackerRank) 해커랭크 SQL [Weather Observation Station 5] Oracle 풀이 (0) | 2021.11.30 |