GROUP BY 和 DISTINCT 之间的区别

GROUP BY 与聚合函数结合使用。请考虑下表:

订单 ID 用户身份 STORENAME orderValue 订购日期
1 43 商店 A. 25 20-03-2016
2 57 商店 B 50 22-03-2016
3 43 商店 A. 三十 25-03-2016
4 82 存储 C 10 26-03-2016
21 商店 A. 45 29-03-2016

下面的查询使用 GROUP BY 执行聚合计算。

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;

并将返回以下信息

STORENAME total_nr_orders nr_unique_customers average_order_value 第一个订单 最后的订单
商店 A. 3 2 33.3 20-03-2016 29-03-2016
商店 B 1 1 50 22-03-2016 22-03-2016
存储 C 1 1 10 26-03-2016 26-03-2016

虽然 DISTINCT 用于列出指定列的不同值的唯一组合。

SELECT DISTINCT
    storeName,
    userId
FROM
    orders;
STORENAME 用户身份
商店 A. 43
商店 B 57
存储 C 82
商店 A. 21