본문 바로가기

TIL 통합/SQL

JOIN과 BETWEEN 활용, ORDER BY절의 조건문

취준 스터디

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을 쓸 수 있단 거는 분명 했었던 적 있는데....이래서 복습이 중요함ㅠ