Soit le schéma relationnel suivant gérant le fonctionnement d'une agence de location d'appartements.
APPARTEMENT(#code_appt:String, adresse:String, type:{studio,F1,F2,F3,F4,F5+}, prix_loyer:Real)
LOCATAIRE(#code_loc:String, nom:String, prenom:String)
LOCATION(#code_loc=>Locataire, #code_appt=>Appartement)
PAIEMENT_LOYER(#code_loc=>Locataire, #code_appt=>Appartement, #date_payement:Date, prix_paye:Real)
En SQL afficher le nombre d'appartements de chaque type, uniquement pour les types qui commencent par la lettre F.
SELECT COUNT(*)
FROM appartement
WHERE type LIKE 'F%'
GROUP BY type
En SQL afficher le total payé par locataire (avec son code, nom et prenom) pour l'ensemble de ses appartements.
SELECT L.code_loc, L.nom, L.prenom, SUM(P.prix_paye)
From locataire L, paiement_loyer P
WHERE L.code_loc=P.code_loc
GROUP BY L.code_loc, L.nom, L.prenom
nom
et prenom
sont obligatoires dans le group by
: cf Single-Value Rule.
En SQL afficher les locataires (code uniquement) qui louent au moins 2 appartements, en précisant le nombre d'appartements loués et la moyenne des loyers, et trié par ordre décroissant de cette moyenne.
SELECT L.code_loc, COUNT(A.code_appt), AVG(A.prix_loyer)
FROM location L JOIN appartement A
ON A.code_appt=L.code_appt
GROUP BY L.code_loc
HAVING COUNT(A.code_appt)>1
ORDER BY AVG(A.prix_loyer) DESC