Corrigé Mines-Ponts 2025 Informatique commune MP-PC-PSI — Partie 1 (Q1 à Q2) : Base de données de fret maritime : sélection triée et regroupement
Sujet officiel du concours Mines-Ponts, session 2025, épreuve Informatique commune MP-PC-PSI. Corrigé rédigé par Ibrahim Alame.
Sujet officiel (PDF, site du concours)
Énoncé
Le problème du sac à dos. On dispose de objets ; l'objet consomme ressources (son poids) et rapporte un profit ; s'il est choisi, sinon. On cherche à maximiser sous la contrainte . Les , et sont entiers et chaque .
La base. Deux tables illustrent le fret de conteneurs :
NAVIRES(idN, evp, portDepN, dateDep, portDestN):idNclé primaire entière,evpcapacité (en conteneurs de 20 pieds), ports de départ et d'arrivée (chaînes), date de départ ;CONTENEURS(idC, idN, taille, portDepC, dateDisp, portDestC, val):idCclé primaire,idNnavire attribué ( si aucun),taillelongueur ( ou pieds), ports (chaînes, par exemple"Marseille"), date de mise à disposition au formatAAAA-MM-JJ,valtarification entière de à .
Les dates se comparent avec les opérateurs usuels (, , …).
Q1. Écrire une requête SQL donnant l'identifiant et le ratio tarification/longueur, par ratio décroissant, des conteneurs partant de Marseille pour Barcelone mis à disposition avant le 1er janvier 2025.
Q2. Écrire une requête SQL donnant, pour chaque navire, son identifiant et le nombre de conteneurs qui lui sont attribués.
Corrigé
Q1. Une seule table suffit : tous les attributs utiles (idC, val, taille, ports, date) sont dans CONTENEURS. On projette sur l'identifiant et une expression calculée, on sélectionne par WHERE avec trois conditions reliées par AND, puis on trie.
SELECT idC, 1.0 * val / taille AS ratio
FROM CONTENEURS
WHERE portDepC = 'Marseille' AND portDestC = 'Barcelone'
AND dateDisp < '2025-01-01'
ORDER BY ratio DESC;
- Avant le 1er janvier est une inégalité stricte, et la date se compare dans le format de la table (
AAAA-MM-JJ) : l'ordre chronologique est alors l'ordre alphabétique. ORDER BYdoit nommer la colonne de tri (ici l'aliasratio) etDESCdonne l'ordre décroissant.- Le facteur
1.0n'est pas décoratif :valettaillesont entiers et ; en SQLite comme en PostgreSQL, la division de deux entiers est entière et donnerait un ratio nul pour tous les conteneurs, rendant le tri sans objet. Le sujet ne mentionne pas ce point et le jury acceptait sans douteval / taille; signaler le risque et l'éviter ne coûte rien.
100 % gratuit
La suite du corrigé est sur Adloun
Le corrigé rédigé en entier, question par question, et le tuteur pour poser des questions sur ce sujet.
Voir le corrigé complet, gratuitementInscription gratuite en 30 secondes (e-mail, nom d'utilisateur, mot de passe, classe ou profil), sans carte bancaire : arrivée directe sur le corrigé.