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
    图片说明
全部评论

相关推荐

11-04 19:05
已编辑
东莞城市学院 单片机
不知道怎么取名字_:你这个要实习两年?哪有这么久的,感觉就是即使你毕业了,但还按实习的话,是不是不用给你缴社保公积金啥的
点赞 评论 收藏
分享
10-28 10:48
已编辑
门头沟学院 Java
孩子我想要offer:发笔试后还没笔试把我挂了,然后邮箱一直让我测评没测,后面不知道干嘛又给我捞起来下轮笔试,做完测评笔试又挂了😅
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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