-- Step 1: Create the Students table
CREATE TABLE Students (
    ID INT PRIMARY KEY,
    Name VARCHAR(50),
    Marks INT
);

-- Step 2: Insert sample data into Students table
INSERT INTO Students (ID, Name, Marks)
VALUES 
    (1, 'Maria', 99),
    (2, 'Jane', 81),
    (3, 'Julia', 88),
    (4, 'Scarlet', 78),
    (5, 'Tom', 63),
    (6, 'Jerry', 68);

-- Step 3: Create the Grades table
CREATE TABLE Grades (
    grade INT PRIMARY KEY,
    min_mark INT,
    max_mark INT
);

-- Step 4: Insert data into Grades table
INSERT INTO Grades (grade, min_mark, max_mark)
VALUES 
    (10, 90, 100),
    (9, 80, 89),
    (8, 70, 79),
    (7, 60, 69),
    (6, 50, 59),
    (5, 40, 49),
    (4, 30, 39),
    (3, 20, 29),
    (2, 10, 19),
    (1, 0, 9);

-- Step 5: Query to join tables and filter the data with corrected ORDER BY clause
SELECT 
    CASE 
        WHEN g.grade >= 8 THEN s.Name 
        ELSE NULL 
    END AS Name,
    g.grade AS Grade,
    s.Marks AS Mark
FROM 
    Students s
JOIN 
    Grades g ON s.Marks BETWEEN g.min_mark AND g.max_mark
ORDER BY 
    g.grade DESC,
    Name ASC,
    s.Marks ASC;