The Report in SQL | HackerRank Solution

Hello coders, today we are going to solve The Report HackerRank Solution in SQL.

The Report

Problem

You are given two tables: Students and GradesStudents contains three columns IDName and Marks.

ColumnType
IDInteger
NameString
MarksInteger

Grades contains the following data:

GradeMin_MarkMax_Mark
109
21019
32029
43039
54049
65059
76069
87079
98089
109099

Ketty gives Eve a task to generate a report containing three columns: NameGrade and MarkKetty doesn’t want the NAMES of those students who received a grade lower than 8. The report must be in descending order by grade — i.e. higher grades are entered first. If there is more than one student with the same grade (8-10) assigned to them, order those particular students by their name alphabetically. Finally, if the grade is lower than 8, use “NULL” as their name and list them by their grades in descending order. If there is more than one student with the same grade (1-7) assigned to them, order those particular students by their marks in ascending order.

Write a query to help Eve.

Sample Input

IdNameMarks
1Julia88
2Samantha68
3Maria99
4Scarlet78
5Ashley63
6Jane81

Sample Output

Maria 10 99
Jane 9 81
Julia 9 88 
Scarlet 8 78
NULL 7 63
NULL 7 68

Note

Print “NULL”  as the name if the grade is less than 8.

Explanation

Consider the following table with the grades assigned to the students:

IdNameMarksGrade
1Julia889
2Samantha687
3Maria9910
4Scarlet788
5Ashley637
6Jane819

So, the following students got 89 or 10 grades:

  • Maria (grade 10)
  • Jane (grade 9)
  • Julia (grade 9)
  • Scarlet (grade 8)

Solution – The Report in SQL

MySQL

SELECT CASE
    WHEN G.grade > 7 THEN S.name
    ELSE NULL
    end AS names,
    G.grade,
    S.marks
FROM   students S
    JOIN grades G
    ON S.marks BETWEEN G.min_mark AND G.max_mark
ORDER  BY G.grade DESC,
    names ASC,
    S.marks ASC;

Disclaimer: The above Problem (The Report) is generated by Hacker Rank but the Solution is Provided by CodingBroz. This tutorial is only for Educational and Learning Purpose.

1 thought on “The Report in SQL | HackerRank Solution”

  1. SELECT CASE WHEN GRADE > 7 THEN NAME ELSE NULL END,
    GRADE, MARKS
    FROM STUDENTS, GRADES
    WHERE marks BETWEEN MIN_MARK AND MAX_MARK
    ORDER BY GRADE DESC, NAME, MARKS

Leave a Comment

Your email address will not be published. Required fields are marked *