Mysql_窗口函数_OVER()的分组参数PARTITION BY
一.PARTITION BY与GROUP BY区别group by是分组函数,partition by是分析函数在执行顺序上:from > where > group by > having > order by,而partition by应用在以上关键字之后,可以简单理解为就是在执行完select之后,在所得结果集之上进行partition by分组partition b
·
一.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;
更多推荐
已为社区贡献21条内容
所有评论(0)