We use cookies to ensure you have the best browsing experience on our website. Please read our cookie policy for more information about how we use cookies.
- Prepare
- SQL
- Basic Join
- The Report
- Discussions
The Report
The Report
Sort by
recency
|
3514 Discussions
|
Please Login in order to post a comment
SELECT CASE WHEN g.grade < 8 THEN NULL ELSE s.name END AS name, 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, CASE WHEN g.grade < 8 THEN s.marks ELSE s.name END;
MySQL Solution: The below solution adresses the case evn if there are more than one student with the same grade (1-7) assigned to them ans orders them by their marks
select if(grade >= 8, Name, NULL) as name, grade, marks from students s join grades g on s.marks between g.min_mark and g.max_mark order by grade desc, if(grade >= 8,name,marks);
Does it need to have join? DB2 ;- select case when g.grade>=8 then s.name else 'NULL' END, 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, s.name asc;
SELECT (CASE WHEN G.GRADE >= 8 THEN S.NAME ELSE NULL END) NAME, G.GRADE, S.MARKS FROM STUDENTS S INNER JOIN GRADES G ON S.MARKS BETWEEN G.MIN_MARK AND G.MAX_MARK ORDER BY G.GRADE DESC, (CASE WHEN GRADE >= 8 THEN S.NAME ELSE NULL END), CASE WHEN GRADE < 8 THEN S.MARKS ELSE NULL END
oracle select name,(select grade from grades g where s.marks between g.min_mark and g.max_mark) Grade, marks from students s where (select grade from grades g where s.marks between g.min_mark and g.max_mark) >= 8 union select null,(select grade from grades g where s.marks between g.min_mark and g.max_mark) Grade, marks from students s where (select grade from grades g where s.marks between g.min_mark and g.max_mark) < 8 order by grade desc, name, marks ;