SELECT DISTINCT

soit le schéma de la base de données relationnelle suivante:
L'instruction SELECT DISTINCT en SQL est utilisée pour sélectionner des valeurs uniques dans une colonne donnée.
Elle élimine les doublons des résultats de la requête, ce qui signifie que chaque valeur de la colonne spécifiée n'apparaîtra qu'une seule fois dans le résultat.
Cela peut être utile lorsque vous souhaitez obtenir une liste de valeurs uniques à partir d'une colonne particulière d'une table.

Questions & répones


SELECT DISTINCT colonne FROM table;
Maintenant, voici 20 exemples d'utilisation de SELECT DISTINCT avec les tables "produits," "clients," et "ventes" :
  • Q (SELECT DISTINCT): Sélectionnez toutes les catégories de produits distinctes de la table "produits."
    SELECT SELECT DISTINCT categorie FROM produits;
  • Q (SELECT DISTINCT): Sélectionnez tous les noms de clients distincts de la table "clients."
    SELECT 
    SELECT DISTINCT nom FROM clients;
  • Q (SELECT DISTINCT): Sélectionnez toutes les dates distinctes de vente de la table "ventes."
    SELECT 
    SELECT DISTINCT dateVente FROM ventes;
  • Q (SELECT DISTINCT avec WHERE): Sélectionnez tous les produits distincts vendus à un client spécifique (par exemple, client avec l'ID 3).
    SELECT 
    SELECT DISTINCT p.nom
    FROM produits p
    JOIN ventes v ON p.id = v.idProduit
    WHERE v.idClient = 3;
  • Q (SELECT DISTINCT avec WHERE): Sélectionnez tous les noms de clients distincts de la ville "New York."
    SELECT 
    SELECT DISTINCT nom FROM clients WHERE ville = 'New York';
  • Q (SELECT DISTINCT avec WHERE): Sélectionnez toutes les dates distinctes de vente pour un produit spécifique (par exemple, produit avec l'ID 5).
    SELECT 
    SELECT DISTINCT dateVente
    FROM ventes
    WHERE idProduit = 5;
  • Q (SELECT DISTINCT avec GROUP BY): Sélectionnez toutes les marques distinctes de produits vendus.
    SELECT 
    SELECT DISTINCT p.marque
    FROM produits p
    JOIN ventes v ON p.id = v.idProduit;
  • Q (SELECT DISTINCT avec GROUP BY): Sélectionnez tous les prénoms distincts des clients avec le montant total d'achats le plus élevé.
    SELECT 
    SELECT DISTINCT c.prenom
    FROM clients c
    JOIN ventes v ON c.id = v.idClient
    GROUP BY c.prenom
    HAVING SUM(v.prixVente * QuantiteVendue) = (SELECT MAX(montant_total) FROM (SELECT idClient, SUM(prixVente * QuantiteVendue) AS montant_total FROM ventes GROUP BY idClient) subquery);
  • Q (SELECT DISTINCT avec GROUP BY): Sélectionnez toutes les catégories distinctes de produits avec le nombre total de produits dans chaque catégorie.
    SELECT 
    SELECT DISTINCT p.categorie, COUNT(*) AS nombre_de_produits
    FROM produits p
    GROUP BY p.categorie;
  • Q (SELECT DISTINCT avec GROUP BY): Sélectionnez toutes les villes distinctes des clients avec le nombre total de clients dans chaque ville.
    SELECT 
    SELECT DISTINCT c.ville, COUNT(*) AS nombre_de_clients
    FROM clients c
    GROUP BY c.ville;
  • Q (SELECT DISTINCT avec ORDER BY): Sélectionnez tous les noms distincts de clients et triez-les par ordre alphabétique.
    SELECT 
    SELECT DISTINCT nom FROM clients ORDER BY nom;
  • Q (SELECT DISTINCT avec ORDER BY): Sélectionnez toutes les catégories distinctes de produits et triez-les par ordre alphabétique inverse.
    SELECT 
    SELECT DISTINCT categorie FROM produits ORDER BY categorie DESC;
  • Q (SELECT DISTINCT avec LIMIT): Sélectionnez les 5 noms distincts de clients les plus récents (basés sur la date d'ajout) à partir de la table "clients."
    SELECT 
    SELECT DISTINCT nom FROM clients ORDER BY dateAjout DESC LIMIT 5;
  • Q (SELECT DISTINCT avec LIMIT): Sélectionnez les 3 marques distinctes de produits les plus chères (basées sur le prix) à partir de la table "produits."
    SELECT 
    SELECT DISTINCT marque FROM produits ORDER BY prix DESC LIMIT 3;
  • Q (SELECT DISTINCT avec LIKE): Sélectionnez toutes les villes distinctes des clients qui commencent par la lettre "L."
    SELECT 
    SELECT DISTINCT ville FROM clients WHERE ville LIKE 'L%';
  • Q (SELECT DISTINCT avec WHERE et GROUP BY): Sélectionnez tous les prénoms distincts des clients ayant effectué des achats pour un montant total supérieur à 1000.
    SELECT 
    SELECT DISTINCT c.prenom
    FROM clients c
    JOIN ventes v ON c.id = v.idClient
    GROUP BY c.prenom
    HAVING SUM(v.prixVente * QuantiteVendue) > 1000;
    
    
  • Q (SELECT DISTINCT avec WHERE et GROUP BY): Sélectionnez tous les noms distincts des clients qui ont effectué des achats entre deux dates spécifiques, par exemple, entre '2023-01-01' et '2023-12-31'.
    SELECT 
    SELECT DISTINCT nom
    FROM clients
    WHERE id IN (
        SELECT DISTINCT idClient
        FROM ventes
        WHERE dateVente BETWEEN '2023-01-01' AND '2023-12-31'
    );
  • Q (SELECT DISTINCT avec WHERE et ORDER BY): Sélectionnez tous les noms distincts de clients dans la ville "Los Angeles" et triez-les par ordre alphabétique.
    SELECT 
    SELECT DISTINCT nom
    FROM clients
    WHERE ville = 'Los Angeles'
    ORDER BY nom;
  • Q (SELECT DISTINCT avec WHERE, GROUP BY et HAVING): Sélectionnez toutes les marques distinctes de produits avec le nombre total de produits dans chaque marque, mais uniquement pour les marques ayant plus de 10 produits en stock.
    SELECT 
    SELECT DISTINCT marque, COUNT(*) AS nombre_de_produits
    FROM produits
    GROUP BY marque
    HAVING COUNT(*) > 10;
  • Q (SELECT DISTINCT avec WHERE, GROUP BY et ORDER BY): Sélectionnez toutes les catégories distinctes de produits avec le nombre total de produits dans chaque catégorie, mais triez-les par nombre de produits de manière décroissante.
    SELECT 
    SELECT DISTINCT categorie, COUNT(*) AS nombre_de_produits
    FROM produits
    GROUP BY categorie
    ORDER BY nombre_de_produits DESC;
  • Q (SELECT DISTINCT avec WHERE, GROUP BY, et LIMIT): Sélectionnez les 5 marques distinctes de produits avec le nombre total de produits dans chaque marque, mais seulement pour les marques ayant le moins de produits en stock.
    SELECT 
    SELECT DISTINCT marque, COUNT(*) AS nombre_de_produits
    FROM produits
    GROUP BY marque
    ORDER BY nombre_de_produits
    LIMIT 5;
  • Q (SELECT DISTINCT avec JOIN): Sélectionnez toutes les villes distinctes des clients ayant effectué des ventes, en effectuant une jointure entre les tables "clients" et "ventes."
    SELECT 
    SELECT DISTINCT c.ville
    FROM clients c
    JOIN ventes v ON c.id = v.idClient;
  • Q (SELECT DISTINCT avec UNION): Sélectionnez tous les prénoms distincts des clients et des vendeurs à partir des tables "clients" et "ventes" en utilisant l'opérateur UNION.
    SELECT 
    SELECT DISTINCT nom AS prenom
    FROM clients
    UNION
    SELECT DISTINCT vendeur AS prenom
    FROM ventes;
  • Q (SELECT DISTINCT avec CASE): Sélectionnez tous les produits distincts de la catégorie "Électronique" et affichez "En stock" si la quantité en stock est supérieure à 0, sinon affichez "En rupture de stock."
    SELECT 
    SELECT DISTINCT nom, 
        CASE
            WHEN quantiteStock > 0 THEN 'En stock'
            ELSE 'En rupture de stock'
        END AS etat_stock
    FROM produits
    WHERE categorie = 'Électronique';