soit le schéma de la base de données relationnelle suivante:
produits(id ,libelle,prix,quantiteStock,marque)
clients(id,nom,prenom,tel,ville)
ventes(idvente,#idClient,#idProduit,dateVente,prixVente,QuantiteVendue)
Questions & répones
Q Quels sont les produits vendus le plus cher par unité en ordre décroissant de prix?
SELECT produits.libelle, MAX(ventes.prixVente / ventes.QuantiteVendue) AS prix_par_unite_max
FROM produits
INNER JOIN ventes ON produits.id = ventes.#idProduit
GROUP BY produits.id
ORDER BY prix_par_unite_max DESC;
Q Quels sont les clients qui ont effectué des achats pour un montant supérieur à 500€, triés par montant total en ordre décroissant?
SELECT clients.nom, clients.prenom, SUM(ventes.prixVente) AS montant_total_achats
FROM clients
INNER JOIN ventes ON clients.id = ventes.#idClient
GROUP BY clients.nom, clients.prenom
HAVING montant_total_achats > 500
ORDER BY montant_total_achats DESC;
Q Quels sont les produits vendus en 2023 triés par quantité vendue en ordre décroissant?
SELECT produits.libelle, SUM(ventes.QuantiteVendue) AS quantite_totale
FROM produits
INNER JOIN ventes ON produits.id = ventes.#idProduit
WHERE YEAR(ventes.dateVente) = 2023
GROUP BY produits.libelle
ORDER BY quantite_totale DESC;
Q Quels sont les clients qui ont effectué des achats pour un montant supérieur à 1000€, triés par nom et prénom en ordre alphabétique?
SELECT clients.nom, clients.prenom, SUM(ventes.prixVente) AS montant_total_achats
FROM clients
INNER JOIN ventes ON clients.id = ventes.#idClient
GROUP BY clients.nom, clients.prenom
HAVING montant_total_achats > 1000
ORDER BY clients.nom, clients.prenom;
Q Quels sont les ventes avec la quantité vendue la plus élevée, triés par quantité vendue en ordre décroissant?
SELECT ventes.idvente, ventes.QuantiteVendue
FROM ventes
ORDER BY ventes.QuantiteVendue DESC;
Q Quels sont les produits vendus le moins cher par quantité, triés par prix de vente par unité en ordre croissant?
SELECT produits.libelle, MIN(ventes.prixVente / ventes.QuantiteVendue) AS prix_par_unite_min
FROM produits
INNER JOIN ventes ON produits.id = ventes.#idProduit
GROUP BY produits.id
ORDER BY prix_par_unite_min;
Q Quels sont les clients qui ont effectué des achats pour un montant total supérieur à la somme des prix de vente de tous les produits en stock, triés par montant total en ordre décroissant?
SELECT clients.nom, clients.prenom, SUM(ventes.prixVente) AS montant_total_achats
FROM clients
INNER JOIN ventes ON clients.id = ventes.#idClient
WHERE ventes.#idProduit IN (SELECT id FROM produits WHERE quantiteStock > 0)
GROUP BY clients.nom, clients.prenom
HAVING SUM(ventes.prixVente) > (SELECT SUM(prix) FROM produits WHERE quantiteStock > 0)
ORDER BY montant_total_achats DESC;
Q Quels sont les produits vendus le plus souvent, triés par nombre de ventes en ordre décroissant?
SELECT produits.libelle, COUNT(ventes.#idProduit) AS nombre_ventes
FROM produits
INNER JOIN ventes ON produits.id = ventes.#idProduit
GROUP BY produits.libelle
ORDER BY nombre_ventes DESC;
Q Quels sont les clients qui ont acheté des produits de plus de deux marques différentes, triés par nombre de marques en ordre décroissant?
SELECT clients.nom, clients.prenom, COUNT(DISTINCT produits.marque) AS nombre_marques_achetees
FROM clients
INNER JOIN ventes ON clients.id = ventes.#idClient
INNER JOIN produits ON ventes.#idProduit = produits.id
GROUP BY clients.id
HAVING COUNT(DISTINCT produits.marque) > 2
ORDER BY nombre_marques_achetees DESC;
Q Quels sont les produits dont le prix de vente est supérieur à la moyenne des prix de vente de leur produit, triés par prix de vente en ordre décroissant?
SELECT produits.libelle, ventes.prixVente
FROM produits
INNER JOIN ventes ON produits.id = ventes.#idProduit
WHERE ventes.prixVente > (SELECT AVG(prixVente) FROM ventes)
ORDER BY ventes.prixVente DESC;
Q Quels sont les ventes avec une quantité vendue supérieure à la moyenne des quantités vendues de leur produit, triés par quantité vendue en ordre décroissant?
SELECT ventes.idvente, #idProduit, QuantiteVendue
FROM ventes
HAVING QuantiteVendue > (SELECT AVG(QuantiteVendue) FROM ventes)
ORDER BY QuantiteVendue DESC;
Q Quels sont les clients qui ont effectué des achats pour un montant supérieur à la moyenne des montants totaux d'achat de tous les clients, triés par montant total en ordre décroissant?
SELECT clients.nom, clients.prenom, SUM(ventes.prixVente) AS montant_total_achats
FROM clients
INNER JOIN ventes ON clients.id = ventes.#idClient
GROUP BY clients.nom, clients.prenom
HAVING SUM(ventes.prixVente) > (SELECT AVG(total_achats) FROM (SELECT SUM(ventes.prixVente) AS total_achats FROM clients INNER JOIN ventes ON
Q Quels sont les clients ayant effectué le plus grand nombre d'achats, regroupés par le nombre d'achats (en ordre décroissant)?
SELECT clients.nom, clients.prenom, COUNT(ventes.idvente) AS nombre_achats
FROM clients
INNER JOIN ventes ON clients.id = ventes.#idClient
GROUP BY clients.nom, clients.prenom
ORDER BY nombre_achats DESC;
Q Quels sont les marques de produits avec le nombre total le plus élevé de produits vendus, regroupées par le nombre de ventes (en ordre décroissant)?
SELECT produits.marque, COUNT(ventes.#idProduit) AS nombre_ventes
FROM produits
INNER JOIN ventes ON produits.id = ventes.#idProduit
GROUP BY produits.marque
ORDER BY nombre_ventes DESC;
Q Quels sont les mois de l'année où le nombre de ventes est le plus élevé, regroupés par mois (en ordre décroissant)?
SELECT YEAR(dateVente) AS annee, MONTH(dateVente) AS mois, COUNT(*) AS nombre_ventes
FROM ventes
GROUP BY annee, mois
ORDER BY nombre_ventes DESC;
Q Quels sont les produits vendus au prix moyen le plus élevé, regroupés par produit (en ordre décroissant)?
SELECT produits.libelle, AVG(ventes.prixVente) AS prix_moyen
FROM produits
INNER JOIN ventes ON produits.id = ventes.#idProduit
GROUP BY produits.libelle
ORDER BY prix_moyen DESC;
Q Quels sont les clients qui ont effectué des achats pour un montant total supérieur à la moyenne des montants totaux d'achat de tous les clients, regroupés par montant total (en ordre décroissant)?
SELECT clients.nom, clients.prenom, SUM(ventes.prixVente) AS montant_total_achats
FROM clients
INNER JOIN ventes ON clients.id = ventes.#idClient
GROUP BY clients.nom, clients.prenom
HAVING SUM(ventes.prixVente) > (SELECT AVG(total_achats) FROM (SELECT SUM(ventes.prixVente) AS total_achats FROM clients INNER JOIN ventes ON clients.id = ventes.#idClient GROUP BY clients.id) AS subquery)
ORDER BY montant_total_achats DESC;
Q Quels sont les produits qui ont été vendus au moins 5 fois, regroupés par produit (en ordre décroissant)?
SELECT produits.libelle, COUNT(ventes.#idProduit) AS nombre_ventes
FROM produits
INNER JOIN ventes ON produits.id = ventes.#idProduit
GROUP BY produits.libelle
HAVING COUNT(ventes.#idProduit) >= 5
ORDER BY nombre_ventes DESC;
Q Quels sont les clients qui ont acheté des produits de la marque "Samsung", regroupés par client (en ordre alphabétique)?
SELECT clients.nom, clients.prenom
FROM clients
INNER JOIN ventes ON clients.id = ventes.#idClient
INNER JOIN produits ON ventes.#idProduit = produits.id
WHERE produits.marque = 'Samsung'
GROUP BY clients.nom, clients.prenom
ORDER BY clients.nom, clients.prenom;
Q Quels sont les produits qui ont été vendus à un prix supérieur à la moyenne des prix de vente de tous les produits, regroupés par produit (en ordre décroissant)?
SELECT produits.libelle, AVG(ventes.prixVente) AS prix_moyen
FROM produits
INNER JOIN ventes ON produits.id = ventes.#idProduit
GROUP BY produits.libelle
HAVING AVG(ventes.prixVente) > (SELECT AVG(prixVente) FROM ventes)
ORDER BY prix_moyen DESC;
Q Quels sont les ventes avec la quantité vendue la plus élevée, regroupées par quantité vendue (en ordre décroissant)?
SELECT ventes.idvente, ventes.QuantiteVendue
FROM ventes
GROUP BY ventes.idvente, ventes.QuantiteVendue
ORDER BY ventes.QuantiteVendue DESC;
Q Quels sont les clients qui ont acheté des produits de plus de deux marques différentes, regroupés par client (en ordre alphabétique)?
SELECT clients.nom, clients.prenom
FROM clients
INNER JOIN ventes ON clients.id = ventes.#idClient
INNER JOIN produits ON ventes.#idProduit = produits.id
GROUP BY clients.nom, clients.prenom
HAVING COUNT(DISTINCT produits.marque) > 2
ORDER BY clients.nom, clients.prenom;
Q Quels sont les ventes avec un prix de vente supérieur à 150% du prix d'achat, regroupées par vente (en ordre décroissant)?
SELECT ventes.idvente, #idProduit, ventes.prixVente, produits.prix
FROM ventes
INNER JOIN produits ON ventes.#idProduit = produits.id
WHERE ventes.prixVente > 1.5 * produits.prix
ORDER BY ventes.prixVente DESC;
Q Quels sont les clients qui ont acheté des produits de la marque "Apple" en 2023, regroupés par client (en ordre alphabétique)?
SELECT clients.nom, clients.prenom
FROM clients
INNER JOIN ventes ON clients.id = ventes.#idClient
INNER JOIN produits ON ventes.#idProduit = produits.id
WHERE produits.marque = 'Apple' AND YEAR(ventes.dateVente) = 2023
ORDER BY clients.nom, clients.prenom;