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