数据库常见面试题 —— 11. Partition by 和 group by 的区别
与 GROUP BY 不同的是,PARTITION BY 不是仅用于聚合结果的分组策略,而是仅分区未聚合的结果集。GROUP BY 子句通常用于聚合函数(例如 SUM,COUNT,AVG 等)的计算,以便将多行数据组合成单个行,并根据聚合结果对数据进行分组。因此,PARTITION BY 和 GROUP BY 都将数据集分成多个分组,然而,它们的主要区别是 GROUP BY 定义了聚合条件,而 P
GROUP BY 子句通常用于聚合函数(例如 SUM,COUNT,AVG 等)的计算,以便将多行数据组合成单个行,并根据聚合结果对数据进行分组。它可以将结果分为不同的组,其中每个组包含具有相同值的一组行,并且可以根据一项或多项列来指定分组。例如:
SELECT country, city, COUNT(*) as count
FROM customers
GROUP BY country, city
以上 SQL 查询将在 customers 表中将客户按照所在国家和城市进行分组,并计算每个组中客户的数量。
PARTITION BY 子句用于对结果数据集进行分区(分组),然后使用聚合函数(例如 SUM,COUNT,AVG 等)来计算每个分区内的值。与 GROUP BY 不同的是,PARTITION BY 不是仅用于聚合结果的分组策略,而是仅分区未聚合的结果集。这个关键字通常与窗口函数一起使用,对每个分区执行排名、排序和聚合等操作。例如:
SELECT *,
SUM(quantity) OVER (PARTITION BY order_date) as total_quantity
FROM orders
以上 SQL 查询将在 orders 表中,将订单按照订单日期进行分区,并计算结果中每个分区的 quantity 列的总和,并将结果添加到每一行。
因此,PARTITION BY 和 GROUP BY 都将数据集分成多个分组,然而,它们的主要区别是 GROUP BY 定义了聚合条件,而 PARTITION BY 是仅用于分组结果集并对每个分区执行排名、排序和聚合等分析函数。
更多推荐
所有评论(0)