취준 스터디
JOIN과 BETWEEN 활용, ORDER BY절의 조건문
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
내가 쓴 답
with temp as
(
select name, marks,
case when marks<9 then 1
when marks>=90 then 10
when marks between 10 and 89 then substr(marks, 1, 1)+1 end as grade
from students
)
select if(grade >=8, name, Null) as name,
grade,
marks
from temp
order by CAST(grade AS UNSIGNED) desc, name asc, marks asc
다른 분들의 답(예시)
select if(g.Grade < 8, 'NULL', s.Name), g.Grade, s.Marks
from Students s, Grades g
where s.Marks between g.Min_Mark and g.Max_Mark
order by g.Grade desc, case when g.Grade >= 8 then s.Name when g.grade <8 then s.Marks end asc;
포인트
- join을 쓰면서 동시에 on에 between을 활용해 범주로 묶어줄 수 있음
- order by에 조건문을 붙여줄 수 있음
order by에 조건문을 쓸 수 있다는 것은 처음 알았지만
join에 between을 쓸 수 있단 거는 분명 했었던 적 있는데....이래서 복습이 중요함ㅠ
'TIL 통합 > SQL' 카테고리의 다른 글
조건문 및 SUBSTR로 문제 쉽게 풀기 (0) | 2024.04.03 |
---|---|
TRUNCATE, CROSS JOIN 및 LEFT JOIN (0) | 2024.03.15 |
REGEXP (0) | 2024.02.27 |
서울시 (청년) 인구 데이터 가공 - 서브쿼리, JOIN, 숫자인식 (0) | 2024.02.08 |
SQL - 정규표현식 카타 문제 모음 (0) | 2024.02.02 |