一.PARTITION BY与GROUP BY区别
-
group by是分组函数,partition by是分析函数
-
在执行顺序上:from > where > group by > having > order by,而partition by应用在以上关键字之后,可以简单理解为就是在执行完select之后,在所得结果集之上进行partition by分组
-
partition by相比较于group by,能够在保留全部数据的基础上,只对其中某些字段做分组排序(类似excel中的操作),而group by则只保留参与分组的字段和聚合函数的结果(类似excel中的pivot透视表)
二.PARTITION BY的基本用法
- 在OVER()中添加 PARTITION BY
# 查询每种类型火车的ID,型号,一等座数量,同型号一等座数量总量
SELECT
id,
model,
first_class_places,
count(id) OVER (PARTITION BY model)
FROM train;
- PARTITION BY传入多列
# 查询每天,每条线路速的最快车速
SELECT
journey.id,
journey.date,
train.model,
MAX(max_speed) OVER (PARTITION BY
route_id, date)
FROM journey
JOIN train
ON train.id = journey.train_id;
本文详细介绍了PARTITION BY与GROUP BY的区别及其在SQL查询中的应用。PARTITION BY作为分析函数,允许在保留所有数据的基础上对特定字段进行分组排序,而GROUP BY则用于聚合数据,仅保留分组字段和聚合结果。通过实例展示了如何使用PARTITION BY进行窗口函数操作,如查询每种类型火车的一等座总数量和每天每条线路的最快车速。
1571

被折叠的 条评论
为什么被折叠?



