SQL Différence entre GROUP BY et DISTINCT


Exemple

GROUP BY est utilisé en combinaison avec les fonctions d'agrégation. Considérons le tableau suivant:

numéro de commande identifiant d'utilisateur nom du magasin valeur de la commande date de commande
1 43 Magasin a 25 20-03-2016
2 57 Magasin B 50 22-03-2016
3 43 Magasin a 30 25-03-2016
4 82 Magasin C dix 26-03-2016
5 21 Magasin a 45 29-03-2016

La requête ci-dessous utilise GROUP BY pour effectuer des calculs agrégés.

SELECT
    storeName,
    COUNT(*) AS total_nr_orders,
    COUNT(DISTINCT userId) AS nr_unique_customers,
    AVG(orderValue) AS average_order_value,
    MIN(orderDate) AS first_order,
    MAX(orderDate) AS lastOrder
FROM
    orders
GROUP BY
    storeName;

et renverra les informations suivantes

nom du magasin total_nr_orders nr_unique_customers average_order_value Premier ordre dernière commande
Magasin a 3 2 33,3 20-03-2016 29-03-2016
Magasin B 1 1 50 22-03-2016 22-03-2016
Magasin C 1 1 dix 26-03-2016 26-03-2016

Alors que DISTINCT est utilisé pour répertorier une combinaison unique de valeurs distinctes pour les colonnes spécifiées.

SELECT DISTINCT
    storeName,
    userId
FROM
    orders;
nom du magasin identifiant d'utilisateur
Magasin a 43
Magasin B 57
Magasin C 82
Magasin a 21