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
|
3584 Discussions
|
Please Login in order to post a comment
**SELECT
CASE WHEN G.Grade >=8 then S.Name ELSE null END , G.Grade, S.Marks FROM Students as S INNER JOIN Grades as G on S.Marks BETWEEN G.Min_Mark AND G.Max_Mark order by G.Grade desc , S.Name Asc ; **
thank me later : SELECT CASE WHEN Grade < 8 THEN NULL ELSE Name END AS Name , Grade , Marks FROM Students JOIN Grades ON Students.Marks BETWEEN Grades.Min_Mark AND Grades.Max_Mark ORDER BY Grade DESC, ( CASE WHEN Grade < 8 THEN Marks ELSE Name END ) ASC
SET NOCOUNT ON;
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.Name ELSE NULL END asc, CASE WHEN g.Grade < 8 THEN s.marks ELSE NULL END asc; go
Since there's no ID to join the tables directly, we’re using Marks to join the table and match each student to a grade range. See line: ON Students.Marks BETWEEN Grades.MinMark AND Grades.MaxMark. I used to think you could only join tables using IDs, but this example shows you can also join using value-based conditions, like a range. Thought this might help others who are new to SQL like myself!
SELECT IF(Grades.Grade < 8, NULL, Students.Name) AS Name, Grades.Grade, Students.Marks FROM Students JOIN Grades ON Students.Marks BETWEEN Grades.Min_Mark AND Grades.Max_Mark ORDER BY Grades.Grade DESC, Students.Name, Students.Marks;