From 1622e22e5eb5438661c54258d648c6c26ca6f54c Mon Sep 17 00:00:00 2001 From: Justine Ouellette <justine.ouellette@polymtl.ca> Date: Wed, 19 Apr 2023 16:53:01 -0400 Subject: [PATCH] maybe sql requests --- query.sql | 56 +++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 44 insertions(+), 12 deletions(-) diff --git a/query.sql b/query.sql index 51019e0..dbef391 100644 --- a/query.sql +++ b/query.sql @@ -2,37 +2,69 @@ -- 1. Retourne la marque, le modèle et l'emplacement d'origine des véhicule -SELECT marque, modele, emplacementNom FROM Vehicule; +SELECT marque, modele, emplacement_nom FROM Vehicule; -- 2. Retourne le marque, le modèle et l'emlacement d'origine des véhicules y compris les marques et les modèles qui n'ont pas de location -SELECT marque, modele, emplacementNom FROM Vehicule; +SELECT marque, modele, emplacement_nom FROM Vehicule; -- 3. Retournez les emplacements sans véhicules - +SELECT emplacement.nom, count(vehicule.immatriculation) +FROM emplacement e +LEFT OUTER JOIN vehicule v ON e.nom = v.emplacement_nom +GROUP BY emplacement.nom +HAVING count(vehicule.immatriculation) = 0; -- 4. Retournez tous les véhicules dont le domicile est situé dans la ville de Montréal - +SELECT * FROM vehicule v +LEFT JOIN emplacement e ON v.emplacement_nom = e.nom +WHERE e.adresse_postale_ville = 'Montréal'; -- 5. Retournez les emplacements et le nombre de voitures hybrides à chaque emplacement - +SELECT emplacement.nom, count(vehicule.immatriculation) +FROM emplacement e +LEFT OUTER JOIN vehicule v ON e.nom = v.emplacement_nom +GROUP BY emplacement.nom +HAVING v.type = 'Hybride'; -- 6. Retournez les plaques d’immatriculation des véhicules qui ont été utilisés (pas seulement réservés) - +SELECT vehicule.immatriculation +FROM vehicule v +JOIN utilisation u ON v.immatriculation = u.immatriculation; -- 7. Retournez toutes les informations des membres (personnes physiques) vivant dans une ville avec un emplacement qui a des voitures hybrides - +SELECT * FROM membre m +LEFT JOIN emplacement e +LEFT OUTER JOIN vehicule v ON e.nom = v.emplacement_nom +WHERE v.type = 'Hybride' +ON m.adresse_postale_ville = e.adresse_postale_ville +WHERE m.est_membre_physique = TRUE; -- 8. Retournez toutes les informations des véhicules à l’emplacement Montréal qui sont libres le 23/01/2023 à 10 h - +SELECT * FROM vehicule v +LEFT OUTER JOIN reservation r ON v.immatriculation = r.immatriculation +AND ('2023-01-23 10:00:00' BETWEEN r.temps_debut AND r.temps_fin) +WHERE v.emplacement_nom = 'Montréal' +AND r.temps_debut IS NULL; -- 9. Retournez les plaques d’immatriculation et le nombre de réservations de chaque véhicule (y compris ceux sans réservation, c’est-à -dire que le nombre de réservations est 0) - +SELECT vehicule.immatriculation, count(reservation.temps_debut) +FROM vehicule v +LEFT OUTER JOIN resrevation r ON v.immatriculation = r.immatriculation +GROUP BY vehicule.immatriculation; -- 10. Quel est le véhicule avec la consommation de carburant la plus élevée ? - +SELECT * FROM vehicule +WHERE consommation = (SELECT MAX(consommation) FROM vehicule); -- 11. Retournez la consommation de carburant maximale, moyenne et minimale par catégorie de véhicule - +SELECT vehicule.type, MAX(vehicule.consommation), AVG(vehicule.consommation), MIN(vehicule.consommation) +FROM vehicule +GROUP BY vehicule.type; -- 12. Retournez tous les membres qui ont réservé un véhicule à un endroit autre que leur emplacement d’origine même si le type de véhicule existe à leur emplacement d’origine - +SELECT * FROM membre m +RIGHT OUTER JOIN reservation r ON r.numero_membre = m.numero_membre +LEFT OUTER JOIN vehicule v ON r.immatriculation = v.immatriculation +WHERE v.emplacement_nom != m.emplacement_favoris_nom AND vehicule.immatriculation = v.immatriculation FROM vehicle +LEFT OUTER JOIN emplacement e ON m.emplacement_favoris_nom = e.nom +WHERE v.type = vehicle.type; -- GitLab