一.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;
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐