Rappel SQL

soit le schéma de la base de données relationnelle suivante:

-- Création de la table "produits"
CREATE TABLE produits (
    id INT AUTO_INCREMENT PRIMARY KEY,
    libelle VARCHAR(255),
    prix DECIMAL(10, 2),
    quantiteStock INT,
    marque VARCHAR(255),
    categorie VARCHAR(255),
    promotion TINYINT(1)
);

-- Création de la table "clients"
CREATE TABLE clients (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nom VARCHAR(255),
    prenom VARCHAR(255),
    tel VARCHAR(20),
    ville VARCHAR(255),
    dateNaissance DATE
);

-- Création de la table "ventes"
CREATE TABLE ventes (
    idvente INT AUTO_INCREMENT PRIMARY KEY,
    idClient INT,
    idProduit INT,
    dateVente DATE,
    prixVente DECIMAL(10, 2),
    QuantiteVendue INT,
    remise DECIMAL(5, 2),
    FOREIGN KEY (idClient) REFERENCES clients(id) ON DELETE CASCADE ON UPDATE CASCADE,
    FOREIGN KEY (idProduit) REFERENCES produits(id) ON DELETE CASCADE ON UPDATE CASCADE
);

Questions & répones

  • QQuels sont les produits disponibles dans la base de données?
    SELECT libelle FROM produits;
  • QCombien de clients sont enregistrés?
    SELECT COUNT(*) FROM clients;
  • QQuel est le nom du client avec l'ID 3?
    SELECT nom FROM clients WHERE id = 3;
  • QCombien de produits sont en stock?
    SELECT COUNT(*) FROM produits WHERE quantiteStock > 0;
  • QQuels sont les produits dont le prix est supérieur à 50€?
    SELECT libelle FROM produits WHERE prix > 50;
  • QQuels sont les clients qui vivent à Paris?
    SELECT nom, prenom FROM clients WHERE ville = 'Paris';
  • QQuels sont les produits de la marque "Samsung"?
    SELECT libelle FROM produits WHERE marque = 'Samsung';
  • QQuel est le nombre total de ventes enregistrées?
    SELECT COUNT(*) FROM ventes;
  • QQuels sont les détails de la vente avec l'ID 7?
    SELECT * FROM ventes WHERE idvente = 7;
  • QQuel est le total des ventes réalisées par le client avec l'ID 5?
    SELECT SUM(prixVente) FROM ventes WHERE idClient = 5;
  • QQuels sont les produits vendus à un prix supérieur à 100€?
    SELECT libelle FROM produits INNER JOIN ventes ON produits.id = ventes.idProduit WHERE prixVente > 100;
  • QCombien de ventes ont eu lieu en 2023?
    SELECT COUNT(*) FROM ventes WHERE YEAR(dateVente) = 2023;
  • QQuels sont les clients qui ont effectué des achats en 2022?
    SELECT DISTINCT clients.nom, clients.prenom FROM clients
    INNER JOIN ventes ON clients.id = ventes.idClient
    WHERE YEAR(ventes.dateVente) = 2022;
  • QQuels sont les clients qui ont acheté un produit de la marque "Apple"?
    SELECT DISTINCT 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';
  • QQuels sont les produits qui n'ont jamais été vendus?
    SELECT libelle FROM produits
    WHERE produits.id NOT IN (SELECT idProduit FROM ventes);
  • QQuel est le produit le plus cher en stock?
    SELECT libelle, prix FROM produits
    WHERE quantiteStock > 0
    ORDER BY prix DESC
    LIMIT 1;
  • QCombien de produits différents ont été vendus en tout?
    SELECT COUNT(DISTINCT idProduit) FROM ventes;
  • QQuels sont les clients ayant effectué plus de 5 achats?
    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
    HAVING COUNT(ventes.idvente) > 5;
  • QQuel est le montant total des ventes pour chaque client?
    SELECT clients.nom, clients.prenom, SUM(ventes.prixVente) AS montant_total_ventes FROM clients
    INNER JOIN ventes ON clients.id = ventes.idClient
    GROUP BY clients.nom, clients.prenom;
  • QQuels sont les produits vendus le plus souvent?
    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;
  • QQuels sont les produits qui ont été vendus au moins 10 fois?
    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) >= 10;
  • QQuels sont les clients ayant dépensé le plus d'argent?
    SELECT clients.nom, clients.prenom, SUM(ventes.prixVente) AS montant_total_ventes FROM clients
    INNER JOIN ventes ON clients.id = ventes.idClient
    GROUP BY clients.nom, clients.prenom
    ORDER BY montant_total_ventes DESC;
  • QQuels sont les clients ayant effectué un achat le 1er janvier 2023?
    SELECT clients.nom, clients.prenom FROM clients
    INNER JOIN ventes ON clients.id = ventes.idClient
    WHERE DATE(ventes.dateVente) = '2023-01-01';
  • QQuel est le chiffre d'affaires total pour l'année 2022?
    SELECT SUM(prixVente) AS chiffre_affaires_2022 FROM ventes
    WHERE YEAR(dateVente) = 2022;
    
  • QQuels sont les produits qui ont été vendus au moins une fois en quantité supérieure à 10 unités?
    SELECT produits.libelle, SUM(ventes.QuantiteVendue) AS quantite_totale
    FROM produits
    INNER JOIN ventes ON produits.id = ventes.idProduit
    GROUP BY produits.libelle
    HAVING SUM(ventes.QuantiteVendue) > 10;
  • QQuels sont les clients qui ont effectué des achats pour un montant supérieur à 1000€?
    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) > 1000;
  • QQuels sont les clients qui n'ont effectué aucun achat?
    SELECT clients.nom, clients.prenom
    FROM clients
    LEFT JOIN ventes ON clients.id = ventes.idClient
    WHERE ventes.idClient IS NULL;
  • QQuel est le produit le plus vendu en termes de quantité?
    SELECT produits.libelle, SUM(ventes.QuantiteVendue) AS quantite_totale
    FROM produits
    INNER JOIN ventes ON produits.id = ventes.idProduit
    GROUP BY produits.libelle
    ORDER BY quantite_totale DESC
    LIMIT 1;
  • QQuels sont les clients qui ont acheté des produits pour un montant total supérieur à la moyenne des montants totaux d'achat de tous les clients?
    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);
    
  • QQuels sont les produits dont le prix de vente est supérieur à deux fois leur prix d'achat?
    SELECT produits.libelle
    FROM produits
    INNER JOIN ventes ON produits.id = ventes.idProduit
    WHERE ventes.prixVente > (2 * produits.prix);
  • QQuels sont les ventes qui ont eu lieu le même jour que l'achat du produit (date de vente égale à date d'achat)?
    SELECT ventes.idvente
    FROM ventes
    INNER JOIN produits ON ventes.idProduit = produits.id
    WHERE DATE(ventes.dateVente) = DATE(produits.dateAchat);
  • QQuels sont les clients qui ont acheté plus d'un produit le même jour (date de vente égale à date d'achat)?
    SELECT clients.nom, clients.prenom
    FROM clients
    INNER JOIN ventes ON clients.id = ventes.idClient
    INNER JOIN produits ON ventes.idProduit = produits.id
    WHERE DATE(ventes.dateVente) = DATE(produits.dateAchat)
    GROUP BY clients.id
    HAVING COUNT(ventes.idvente) > 1;
  • QQuels sont les produits les moins chers actuellement en stock?
    SELECT produits.libelle, produits.prix
    FROM produits
    WHERE quantiteStock > 0
    ORDER BY produits.prix
    LIMIT 5;
  • QQuels sont les produits vendus le moins cher par quantité (prix de vente par unité le plus bas)?
    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;
  • QQuel est le nombre total de ventes par mois en 2023?
    SELECT MONTH(ventes.dateVente) AS mois, COUNT(*) AS nombre_ventes
    FROM ventes
    WHERE YEAR(ventes.dateVente) = 2023
    GROUP BY mois;
  • QQuels sont les clients qui ont effectué des achats pour un montant supérieur à la médiane des montants totaux d'achat de tous les clients?
    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 montant_median FROM (SELECT PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY SUM(ventes.prixVente)) AS montant_median FROM clients INNER JOIN ventes ON clients.id = ventes.idClient GROUP BY clients.id) AS subquery);
  • QQuels sont les ventes où la quantité vendue est supérieure à 50 unités?
    SELECT ventes.idvente, ventes.QuantiteVendue
    FROM ventes
    WHERE ventes.QuantiteVendue > 50;
  • QQuels sont les clients qui n'ont jamais effectué de vente?
    SELECT clients.nom, clients.prenom
    FROM clients
    LEFT JOIN ventes ON clients.id = ventes.idClient
    WHERE ventes.idvente IS NULL;
  • QQuels sont les ventes qui ont eu lieu le week-end (samedi ou dimanche)?
    SELECT ventes.idvente, ventes.dateVente
    FROM ventes
    WHERE DAYOFWEEK(ventes.dateVente) IN (1, 7);
    
  • QQuels sont les produits vendus le plus cher par quantité (prix de vente par unité le plus élevé)?
    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;
  • QQuels sont les ventes qui ont eu lieu après le 1er septembre 2023?
    SELECT ventes.idvente, ventes.dateVente
    FROM ventes
    WHERE ventes.dateVente > '2023-09-01';
  • QQuels sont les produits qui ont été vendus exactement 5 fois?
    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;
  • QQuels sont les clients qui ont acheté un produit avec un rabais (prix de vente inférieur au prix d'achat)?
    SELECT DISTINCT clients.nom, clients.prenom
    FROM clients
    INNER JOIN ventes ON clients.id = ventes.idClient
    INNER JOIN produits ON ventes.idProduit = produits.id
    WHERE ventes.prixVente < produits.prix;
  • QQuel est le montant total des ventes pour chaque mois en 2023?
    SELECT YEAR(ventes.dateVente) AS annee, MONTH(ventes.dateVente) AS mois, SUM(ventes.prixVente) AS montant_total_ventes
    FROM ventes
    WHERE YEAR(ventes.dateVente) = 2023
    GROUP BY annee, mois;
  • QQuels sont les ventes où la quantité vendue est égale à la quantité en stock du produit?
    SELECT ventes.idvente, ventes.QuantiteVendue, produits.quantiteStock
    FROM ventes
    INNER JOIN produits ON ventes.idProduit = produits.id
    WHERE ventes.QuantiteVendue = produits.quantiteStock;
  • QQuels sont les clients qui ont effectué des achats dans au moins deux villes différentes?
    SELECT clients.nom, clients.prenom, COUNT(DISTINCT clients.ville) AS nombre_villes_achats
    FROM clients
    INNER JOIN ventes ON clients.id = ventes.idClient
    GROUP BY clients.nom, clients.prenom
    HAVING COUNT(DISTINCT clients.ville) >= 2;
  • QQuels sont les ventes où le prix de vente est inférieur à 90% du prix d'achat?
    SELECT ventes.idvente
    FROM ventes
    INNER JOIN produits ON ventes.idProduit = produits.id
    WHERE ventes.prixVente < (0.9 * produits.prix);
  • QQuels sont les produits qui ont été vendus à un prix supérieur à la moyenne des prix de vente de tous les produits?
    SELECT produits.libelle
    FROM produits
    INNER JOIN ventes ON produits.id = ventes.idProduit
    GROUP BY produits.libelle
    HAVING ventes.prixVente > (SELECT AVG(prixVente) FROM ventes);
  • QQuels sont les clients qui ont acheté le même produit plus d'une fois?
    SELECT clients.nom, clients.prenom, ventes.idProduit, COUNT(*) AS nombre_achats
    FROM clients
    INNER JOIN ventes ON clients.id = ventes.idClient
    GROUP BY clients.nom, clients.prenom, ventes.idProduit
    HAVING COUNT(*) > 1;
    
  • QQuels sont les clients qui ont effectué des achats pour un montant supérieur à la moyenne des montants totaux d'achat de tous les clients?
    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);
  • QQuels sont les produits qui n'ont jamais été vendus?
    SELECT produits.libelle
    FROM produits
    WHERE produits.id NOT IN (SELECT idProduit FROM ventes);
  • QQuel est le produit le plus cher en stock?
    SELECT produits.libelle, produits.prix
    FROM produits
    WHERE quantiteStock > 0
    ORDER BY produits.prix DESC
    LIMIT 1;
  • QCombien de produits différents ont été vendus en tout?
    SELECT COUNT(DISTINCT idProduit) FROM ventes;
  • QQuels sont les clients ayant effectué plus de 5 achats?
    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
    HAVING COUNT(ventes.idvente) > 5;
  • QQuel est le montant total des ventes pour chaque client?
    SELECT clients.nom, clients.prenom, SUM(ventes.prixVente) AS montant_total_ventes
    FROM clients
    INNER JOIN ventes ON clients.id = ventes.idClient
    GROUP BY clients.nom, clients.prenom;
  • QQuels sont les produits vendus le plus souvent?
    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;
  • QQuels sont les produits qui ont été vendus au moins 10 fois?
    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) >= 10;
  • QQuels sont les clients ayant dépensé le plus d'argent?
    SELECT clients.nom, clients.prenom, SUM(ventes.prixVente) AS montant_total_ventes
    FROM clients
    INNER JOIN ventes ON clients.id = ventes.idClient
    GROUP BY clients.nom, clients.prenom
    ORDER BY montant_total_ventes DESC;
  • QQuels sont les clients qui ont acheté des produits de la marque "Apple" en 2023?
    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;
    
  • QQuels sont les produits qui ont une quantité en stock inférieure à 10 unités?
    SELECT libelle, quantiteStock
    FROM produits
    WHERE quantiteStock < 10;
  • QQuels sont les clients qui ont effectué des achats pour un montant total entre 500€ et 1000€?
    SELECT nom, prenom, SUM(prixVente) AS montant_total_achats
    FROM clients
    INNER JOIN ventes ON clients.id = ventes.idClient
    GROUP BY nom, prenom
    HAVING montant_total_achats BETWEEN 500 AND 1000;
  • QQuels sont les ventes qui ont eu lieu au dernier trimestre de 2023 (d'octobre à décembre)?
    SELECT idvente, dateVente
    FROM ventes
    WHERE YEAR(dateVente) = 2023
    AND MONTH(dateVente) BETWEEN 10 AND 12;
  • QQuels sont les produits qui ont été vendus à un prix inférieur à 10€?
    SELECT libelle
    FROM produits
    INNER JOIN ventes ON produits.id = ventes.idProduit
    WHERE ventes.prixVente < 10;
  • QQuel est le client qui a réalisé la vente la plus chère?
    SELECT clients.nom, clients.prenom, MAX(prixVente) AS vente_la_plus_chere
    FROM clients
    INNER JOIN ventes ON clients.id = ventes.idClient
    GROUP BY clients.id;
  • QCombien de clients ont le même nom de famille (nom) dans la base de données?
    SELECT nom, COUNT(*) AS nombre_clients
    FROM clients
    GROUP BY nom
    HAVING COUNT(*) > 1;
  • QQuels sont les clients qui ont acheté un produit avec un prix de vente égal à son prix d'achat?
    SELECT clients.nom, clients.prenom, produits.libelle
    FROM clients
    INNER JOIN ventes ON clients.id = ventes.idClient
    INNER JOIN produits ON ventes.idProduit = produits.id
    WHERE ventes.prixVente = produits.prix;
  • QQuel est le montant total des ventes pour chaque produit?
    SELECT produits.libelle, SUM(ventes.prixVente) AS montant_total_ventes
    FROM produits
    INNER JOIN ventes ON produits.id = ventes.idProduit
    GROUP BY produits.libelle;
  • QQuels sont les ventes qui ont eu lieu un dimanche?
    SELECT idvente, dateVente
    FROM ventes
    WHERE DAYOFWEEK(dateVente) = 1;
  • QQuels sont les produits dont le nom (libelle) commence par la lettre "A"?
    SELECT libelle
    FROM produits
    WHERE libelle LIKE 'A%';
  • QQuels sont les clients qui ont acheté un produit en janvier 2023?
    SELECT DISTINCT clients.nom, clients.prenom
    FROM clients
    INNER JOIN ventes ON clients.id = ventes.idClient
    WHERE DATE(ventes.dateVente) BETWEEN '2023-01-01' AND '2023-01-31';
  • QQuels sont les produits qui ont été vendus à un prix inférieur à la moyenne des prix de vente de tous les produits?
    SELECT libelle, prixVente
    FROM produits
    INNER JOIN ventes ON produits.id = ventes.idProduit
    WHERE ventes.prixVente < (SELECT AVG(prixVente) FROM ventes);
  • QCombien de clients ont acheté des produits de la marque "Sony"?
    SELECT COUNT(DISTINCT clients.id) AS nombre_clients
    FROM clients
    INNER JOIN ventes ON clients.id = ventes.idClient
    INNER JOIN produits ON ventes.idProduit = produits.id
    WHERE produits.marque = 'Sony';
    
  • QQuels sont les ventes où le prix de vente est supérieur à 150% du prix d'achat?
    SELECT idvente, idProduit, ventes.prixVente, produits.prix
    FROM ventes
    INNER JOIN produits ON ventes.idProduit = produits.id
    WHERE ventes.prixVente > 1.5 * produits.prix;
  • QQuels 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?
    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);
  • QQuels sont les produits dont le prix de vente est supérieur à la moyenne des prix de vente de tous les produits vendus par quantité?
    SELECT libelle, prixVente
    FROM produits
    INNER JOIN ventes ON produits.id = ventes.idProduit
    GROUP BY produits.id
    HAVING produits.prixVente > (SELECT AVG(prixVente / QuantiteVendue) FROM ventes);
  • QQuels sont les ventes où la quantité vendue est exactement la moitié de la quantité en stock du produit?
    SELECT idvente, ventes.QuantiteVendue, produits.quantiteStock
    FROM ventes
    INNER JOIN produits ON ventes.idProduit = produits.id
    WHERE ventes.QuantiteVendue = produits.quantiteStock / 2;
  • QQuels sont les clients qui ont effectué leur premier achat en 2023?
    SELECT DISTINCT clients.nom, clients.prenom
    FROM clients
    INNER JOIN ventes ON clients.id = ventes.idClient
    WHERE YEAR(ventes.dateVente) = 2023
    AND clients.id NOT IN (SELECT idClient FROM ventes WHERE YEAR(dateVente) < 2023);
  • QQuels sont les produits vendus le moins cher par quantité (prix de vente par unité le plus bas)?
    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;
  • QQuels sont les ventes avec une quantité vendue supérieure à la moyenne des quantités vendues de tous les produits?
    SELECT idvente, idProduit, QuantiteVendue
    FROM ventes
    HAVING QuantiteVendue > (SELECT AVG(QuantiteVendue) FROM ventes);
  • QQuels sont les clients qui ont acheté un produit avec un rabais de 20% ou plus (prix de vente inférieur à 80% du prix d'achat)?
    SELECT DISTINCT clients.nom, clients.prenom
    FROM clients
    INNER JOIN ventes ON clients.id = ventes.idClient
    INNER JOIN produits ON ventes.idProduit = produits.id
    WHERE ventes.prixVente < 0.8 * produits.prix;
  • QQuels sont les ventes qui ont eu lieu le même jour que l'achat du produit (date de vente égale à date d'achat)?
    SELECT ventes.idvente, ventes.dateVente
    FROM ventes
    INNER JOIN produits ON ventes.idProduit = produits.id
    WHERE DATE(ventes.dateVente) = DATE(produits.dateAchat);
  • QQuels sont les produits vendus au prix le plus élevé par marque?
    SELECT produits.marque, produits.libelle, MAX(ventes.prixVente) AS prix_max
    FROM produits
    INNER JOIN ventes ON produits.id = ventes.idProduit
    GROUP BY produits.marque, produits.libelle;
  • QQuels sont les clients qui ont effectué des achats dans deux villes différentes en 2023?
    SELECT clients.nom, clients.prenom
    FROM clients
    INNER JOIN ventes ON clients.id = ventes.idClient
    WHERE YEAR(ventes.dateVente) = 2023
    GROUP BY clients.id
    HAVING COUNT(DISTINCT clients.ville) >= 2;
  • QQuel est le mois le plus actif en termes de ventes?
    SELECT MONTH(dateVente) AS mois, COUNT(*) AS nombre_ventes
    FROM ventes
    GROUP BY mois
    ORDER BY nombre_ventes DESC
    LIMIT 1;
  • QQuels sont les clients qui ont acheté des produits de plus de deux marques différentes?
    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;
  • QQuels sont les produits qui n'ont jamais été vendus en 2023?
    SELECT produits.libelle
    FROM produits
    WHERE produits.id NOT IN (SELECT idProduit FROM ventes WHERE YEAR(dateVente) = 2023);
  • QQuels sont les ventes avec un prix de vente supérieur à la moyenne des prix de vente de leur produit en 2023?
    SELECT ventes.idvente, ventes.prixVente, AVG(prixVente) AS moyenne_prix_vente_pro