SELECT (CASE WHEN B.GRADE >= 8 THEN A.NAME ELSE NULL END) AS NAME
, B.GRADE
, A.MARKS
FROM STUDENTS A, GRADES B
WHERE A.MARKS <= B.MAX_MARK
AND A.MARKS >= B.MIN_MARK
ORDER BY B.GRADE DESC, NAME, A.MARKS
모든 데이터는 등급을 기준으로 내림차순 정렬되어야 하며,
GRADE가 8 이상인 것들 '이름'을 기준으로 오름차순 정렬,
GRADE가 8 미만인 것들은 '점수'를 기준으로 오름차순 정렬되어야 한다.
(CASE WHEN B.GRADE >= 8 THEN A.NAME ELSE NULL END) AS NAME에서
GRADE가 8 미만인 것들은 NAME이 NULL로 조회되기 때문에
이 경우, 같은 등급 내에서 ORDER BY NAME에 영향을 받지 않게 된다.
결과적으로, GRADE가 8 이상인 것들은 같은 등급 내에서 '이름'을 기준으로 오름차순 정렬이,
GRADE가 8 미만인 것들은 같은 등급 내에서 '점수'를 기준으로 오름차순 정렬이 된다.
해커랭크 The Report SQL
'SQL > 해커랭크' 카테고리의 다른 글
[SQL] 해커랭크 SQL Project Planning (0) | 2022.12.03 |
---|---|
[SQL] 해커랭크 Top Competitors (2) | 2022.12.03 |
[SQL] 해커랭크 Occupations (0) | 2022.12.03 |
[SQL] 해커랭크 The PADS (0) | 2022.12.02 |
[SQL] 해커랭크 Type of Triangle (0) | 2022.12.02 |