Aller au contenu

ITC CCMP 2025 - Partie SQL

Sujet CCMP 2025

Partie SQL⚓︎

Base de données - Exemple de fret maritime de conteneurs⚓︎

On donne les tables NAVIRES et CONTENEURS suivantes :

NAVIRES(idN,evp,portDepN,dateDep,portDestN)

  • idN : clĂ© primaire, identifiant du navire (type entier, non nul)
  • evp : capacitĂ© en Ă©quivalent conteneurs de longueur 20 pieds (type entier)
  • portDepN : port de dĂ©part (type chaĂ®ne de caractères)
  • dateDep : date de dĂ©part (type date)
  • portDestN : port de destination (type chaĂ®ne de caractères)

CONTENEURS(idC,idN,taille,portDepC,dateDisp,portDestC,val)

  • idC : clĂ© primaire, identifiant du conteneur (type entier)
  • idN : identifiant du navire attribuĂ© (type entier, valeur 0 si non encore attribuĂ©).
  • taille : longueur du conteneur, 20 ou 40 pieds (type entier). La hauteur et la profondeur sont identiques. • portDepC : port de dĂ©part (type chaĂ®ne de caractères) • dateDisp : date de mise Ă  disposition (type date) • portDestC : port de destination (type chaĂ®ne de caractères) • val : tarification, valeur entière de 1 Ă  5 par ordre croissant de profit pour l’entreprise (type entier)

Corrigé⚓︎

Q1

Écrire une requête permettant de retourner la liste des identifiants de conteneurs et leur ratio tarification/longueur trié par ordre décroissant, partant de Marseille et devant aller à Barcelone, avec une mise à disposition avant le 01/01/2025.

SQL
1
2
3
4
5
6
SELECT idC, (val * 1.0 / taille) AS ratio
FROM CONTENEURS
WHERE portDepC = 'Marseille' 
  AND portDestC = 'Barcelone'
  AND dateDisp < '2025-01-01'
ORDER BY ratio DESC;

Remarques :

La multiplication par 1.0 sert à convertir la valeur entière de val pour ne pas obtenir le quotient de la division entière qui serait obtenu sans cette conversion.

Il est possible de vérifier que sans cette conversion le ratio est toujours 0 ici.

Les dates s'écrivent avec des guillemets comme les chaînes de caractères.

Q2

SQL
1
2
3
4
SELECT idN, COUNT(idC) AS nb_conteneurs
FROM NAVIRES
NATURAL JOIN CONTENEURS
GROUP BY idN;

Remarque :

Le NATURAL JOIN est ici possible car les deux relations NAVIRES et CONTENEURS seront jointes par le couple clé primaire / clé étrangère avec le même nom : idN.

Il est aussi possible d'écrire : JOIN CONTENEURS ON NAVIRES.idN = CONTENUERS.idN

Test de requête :⚓︎

Il est possible de tester des requêtes, arpès avoir exécuter (bouton Exécuter sous le code) le chargement du code SQL plus bas.



Les relations de l'exercice:⚓︎