Structure des données
Il y'a 2 tables disponibles : student et promo
Menez votre enquete pour découvrir leurs structures !
Astuces
- Les noms de champs et de table sont sensibles à la casse
- Pas besoin de guillemets autour des champs ou des tables dans cette simulation
- Les données injectées de type texte doivent etre entourées de guillemets
- Forcez-vous à utiliser les majuscules pour les commandes SQL (convention) meme si ça n'est pas obligatoire
- Pour que l'affichage filtre les étudiants il est nécéssaire que votre requête renvoie une réponse contenant l'id de l'étudiant
Exemple de requêtes
-- Tous les étudiants de 29 ans
SELECT * FROM student WHERE age = 29;
-- L'étudiant qui se prénomme "Julianne"
SELECT * FROM student WHERE firstname = "Julianne";
-- L'id et Le prénom des étudiants portant un couvre-chef
SELECT id, firstname FROM student WHERE hasHat;
-- Trouver les couleurs d'yeux
-- et le nombre d'étudiants les portant
SELECT
eyeColor AS Couleur_d_oeil,
COUNT(id) AS Nombre
FROM
student
GROUP BY
eyeColor;
Exercices
EXO 1
On cherche :
le plus grand étudiant de plus de 30 ans avec un tatouage
Solution
Il faut filtrer les étudiants de plus de 30 ans et avec un tatouage, puis les trier par taille décroissante, puis n'en garder qu'un
SELECT *
FROM student
WHERE age > 30
AND hasTatoo
ORDER BY height DESC
LIMIT 1;
✅ Réponse : Thais Milward
EXO 2
On cherche :
Le plus petit étudiant aux yeux marrons sans piercing
Solution
Il faut filtrer les étudiants aux yeux marrons sans piercing, puis les trier par taille croissante, puis n'en garder qu'un
SELECT *
FROM student
WHERE eyeColor = "Brown"
AND NOT hasPiercing
ORDER BY height ASC
LIMIT 1;
✅ Réponse : Christopher Defraine
EXO 3
On cherche :
Les étudiantes de la promo Electron
Solution
Il faut filtrer les étudiantes de la promo Electron, on a donc besoin de faire une jointure entre les tables student et promo, et de ne garder que les femmes
-- solution 1
SELECT student.*
FROM student
JOIN promo ON promo.id = student.promoId
WHERE promo.name = "Electron"
AND student.gender = "Female";
-- solution 2 (sortie plus complète)
SELECT
student.id,
CONCAT(student.firstname, " ", student.lastname) AS Etudiante,
promo.name AS Promo
FROM student
JOIN promo
ON promo.id = student.promoId
WHERE promo.name LIKE "electron"
AND student.gender LIKE "female";
✅ Réponse : Megan Tredgold, Lily-Rose Lindley, Geri Wagenen, Stéphanie Jowers
EXO 4 - Final 🏁
On cherche le coupable d'un vilain bug informatique !
- le (ou la) coupable est dans une promo de 2021
- le coupable n'a pas de lunettes
- le coupable mesure plus de 165cm
- le coupable habite dans une ville contenant un "e"
- le coupable habite au numéro de rue le plus bas
Solution
Il faut joindre les tables student et promo, filtrer les étudiants de promos 2021, sans lunettes, de plus de 165cm, habitant dans une ville contenant un "e", puis les trier par adresse croissante, puis n'en garder qu'un
SELECT
student.id,
CONCAT(student.firstname, " ", student.lastname) AS Coupable,
promo.name AS Nom_De_Promo
FROM student
JOIN promo ON promo.id = student.promoId
WHERE
promo.year = 2021
AND NOT student.hasGlasses
AND student.height > 165
AND student.city LIKE "%e%"
ORDER BY student.address ASC
LIMIT 1;
✅ Réponse : Andréa Giovannini
EXO Bonus 🎁
On cherche le nom d'une celebre anarchiste française.
Pour la trouver, il faut assembler les 4 premières lettres du nom de famille des étudiants aux cheveux bleus ou roux, triés par age décroissant.
Solution
SELECT
id,
SUBSTR(lastname,1,4)
FROM
student
WHERE
hairColor LIKE "blue"
OR hairColor LIKE "red"
ORDER BY
age DESC;
✅ Réponse : Louise Michel