?HackerRank | The Report

jeonghens·2025년 1월 8일
0

SQL: HackerRank

목록 보기
9/49

HackerRank The Report


두 테이블(Students, Grades)에 대한 JOIN 연산을 수행할 때, 부등호(>=, <=) 또는 BETWEEN을 통해 범위를 지정해줘야 한다.

SELECT
    CASE
        WHEN G.Grade < 8 THEN NULL
        ELSE S.Name
    END AS Display_Name,
    G.Grade,
    S.Marks
FROM
    Students AS S
JOIN
    Grades AS G
ON
    S.Marks >= G.Min_Mark
    AND S.Marks <= G.Max_Mark
    -- S.Marks BETWEEN G.Min_Mark AND G.Max_Mark
ORDER BY
    G.Grade DESC,
    CASE
        WHEN G.Grade < 8 THEN S.Marks
        ELSE Display_Name
    END ASC;

위의 쿼리에서 G.Grade가 8 미만인 경우, Display_Name은 NULL로 같다.
따라서 CASE 문을 사용하지 않고, 정렬 인자를 추가하는 방식으로 쿼리를 작성해도 된다.

SELECT
    CASE
        WHEN G.Grade < 8 THEN NULL
        ELSE S.Name
    END AS Display_Name,
    G.Grade,
    S.Marks
FROM
    Students AS S
JOIN
    Grades AS G
ON
    S.Marks >= G.Min_Mark
    AND S.Marks <= G.Max_Mark
ORDER BY
    G.Grade DESC,
    Display_Name ASC,
    S.Marks ASC;
profile
알고리즘이나 SQL 문제 풀이를 올리고 있습니다. 피드백 환영합니다!

0개의 댓글