了解 SQL 中 PARTITION BY 和 GROUP BY 的差異
分區和分組是 SQL 中資料聚合和處理的關鍵操作。雖然 PARTITION BY 和 GROUP BY 都涉及劃分和聚合數據,但它們在功能和應用方面存在顯著差異。
PARTITION BY:視窗函數分區
PARTITION BY 是主要與視窗函數結合使用,例如 ROW_NUMBER(),它根據定義的分區執行計算。它根據指定的列(稱為分區鍵)將資料劃分為不同的群組。每個分區獨立運行,允許視窗函數計算相對於其各自分區的值。
例如,以下查詢使用PARTITION BY 為每個客戶ID 中的行分配序號:
SELECT ROW_NUMBER() OVER (PARTITION BY customerId ORDER BY orderId) AS OrderNumberForThisCustomer FROM Orders;
GROUP BY:將資料聚合到群組
GROUP BY,另一方面,旨在根據公用值聚合多行資料。它將具有指定列中匹配值的行分組,稱為分組鍵。然後,將聚合函數(例如 COUNT(*) 或 SUM())套用至每個群組。
以下查詢使用 GROUP BY 計算每位客戶的訂單總數:
SELECT customerId, COUNT(*) AS orderCount FROM Orders GROUP BY customerId;
主要差異
PARTITION BY 和 GROUP BY之間的主要差異可以總結如下:
以上是SQL 中的 PARTITION BY 與 GROUP BY:有什麼不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!