首頁 > 資料庫 > mysql教程 > SQL 中的 PARTITION BY 與 GROUP BY:有什麼不同?

SQL 中的 PARTITION BY 與 GROUP BY:有什麼不同?

DDD
發布: 2025-01-06 06:30:39
原創
503 人瀏覽過

PARTITION BY vs. GROUP BY in SQL: What's the Difference?

了解 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之間的主要差異可以總結如下:

  • 用途:PARTITION BY 將視窗函數進行資料分割,GROUP BY 將資料分組。
  • 對結果的影響: PARTITION BY 不會減少傳回的行數,而 GROUP BY 通常會減少傳回的行數透過分組和聚合來排列行。
  • 視窗函數: PARTITION BY 與視窗函數相容,可以在分區內進行運算。 GROUP BY 不支援視窗函數。
  • 彈性:PARTITION BY 允許基於多列進行靈活分區,而 GROUP BY 僅限於基於指定列進行分組。

以上是SQL 中的 PARTITION BY 與 GROUP BY:有什麼不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板