了解 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中文网其他相关文章!