MySql — partition by和group by对比

SQL语句优先级

  • FROM > WHERE > GROUP BY > HAVING > ORDER BY > PARTITION BY

    partition by:在保留全部数据的基础上,只对其中某些字段做分组排序

    group by:只保留参与分组的字段聚合函数的结果

    图片说明

执行group by之后

SELECT name , count(*) 
FROM t_student 
GROUP BY name

图片说明

创建员工表,包含姓名、薪资、部门

CREATE TABLE Employee
(
  ID number(10) not null primary key,
  EmpName varchar(20),
  EmpSalary varchar(10),
  EmpDepartment varchar(20)
);

insert all into Employee values(1,'张三','5000','开发部')
into Employee values(2,'李四','2000','销售部')
into Employee values(3,'王麻子','2500','销售部')
into Employee values(4,'张三表叔','8000','开发部')
into Employee values(5,'李四表叔','5000','开发部')
into Employee values(6,'王麻子表叔','5000','销售部')
select 1 from dual

1. 利用GROUP BY统计每个部门的薪资总和:

SELECT EmpDepartment , sum(EmpSalary) sum_salary
FROM Employee
GROUP BY EmpDepartment

图片说明
2. 利用Partition BY

SELECT EmpSalary,EmpDepartment,SUM(EmpSalary) 
OVER(PARTITION BY EmpDepartment) sum_sala 
FROM Employee

图片说明

  • PARTITION BY结合ORDER BY的高级用法
    SELECT EmpSalary,EmpDepartment,SUM(EmpSalary)
    OVER(PARTITION BY EmpDepartment ORDER BY EmpSalary) sum_sala 
    FROM Employee
    图片说明
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-07 14:00
不想多说了,什么逆天HR,还要教我礼貌😂
机械打工仔:这不纯傻卵吗,他还操心上别人老板了
投递BOSS直聘等公司7个岗位
点赞 评论 收藏
分享
07-10 11:08
门头沟学院 Java
投递京东等公司9个岗位
点赞 评论 收藏
分享
门口唉提是地铁杀:之前b站被一个游戏demo深深的吸引了。看up主页发现是个初创公司,而且还在招人,也是一天60。二面的时候要我做一个登录验证和传输文件两个微服务,做完要我推到github仓库,还要我加上jaeger和一堆运维工具做性能测试并且面试的时候投屏演示。我傻乎乎的做完以后人家跟我说一句现在暂时不招人,1分钱没拿到全是白干
你的秋招第一场笔试是哪家
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务