-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathetudiant_notes_logique.sql
More file actions
34 lines (32 loc) · 1.21 KB
/
etudiant_notes_logique.sql
File metadata and controls
34 lines (32 loc) · 1.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/* 🎓 HACKERRANK CHALLENGE : "THE REPORT" (Logic & Sorting)
Objectif : Générer un rapport de notes avec des règles de confidentialité
et un tri dynamique complexe.
*/
SELECT
-- Règle métier : Masquer le nom si la note est inférieure à 8 (Grade < 8)
CASE
WHEN g.Grade < 8 THEN NULL
ELSE s.Name
END AS Student_Name,
g.Grade,
s.Marks
FROM Students s
-- Jointure non-équivalente (Non-Equi Join) : On lie via un intervalle de notes
JOIN Grades g ON s.Marks BETWEEN g.Min_Mark AND g.Max_Mark
ORDER BY
-- 1ère priorité : Trier par Grade décroissant
g.Grade DESC,
-- 2ème priorité (Si Grade >= 8) : Trier par Nom alphabétique
CASE
WHEN g.Grade >= 8 THEN s.Name
ELSE NULL
END ASC,
-- 3ème priorité (Si Grade < 8) : Trier par Note croissante
CASE
WHEN g.Grade < 8 THEN s.Marks
ELSE NULL
END ASC;
Pourquoi ce fichier est utile :
Montrer que je sais joindre sur des intervalles de valeurs.
Montrer avec CASE WHEN que j'ai la compétence de masquer des noms et donc comprendre l'enjeux de confidentialité des données.
Montrer que je peux changer le règle de tri selon profil de l'élève (nom vs Note)