本文转载,地址:https://blog.csdn.net/dwt1415403329/article/details/87835383

1、建表并插入数据

因为over是开窗函数,mysql不支持开窗函数,其他如oracle,sql server,db2…等新版本都支持

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

2、计算每个部门的总薪水

2.1、group by

SELECT EmpDepartment,SUM(EmpSalary) sum_sala FROM Employee GROUP BY EmpDepartment

2.2、over(partition by)

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

小结
group by 和 partition by 都有分组统计的功能,但partition by并没有group by的汇总功能
partition by统计的每一条记录都存在,而group by将所有的记录汇总成一条记录(类似于distinct EmpDepartment 去重)
partition by可以和聚合函数结合使用,同时具有其他高级功能。

3、partition by继续探究

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


小结

加上order by 后,类似于累加功能(sum_sala = sum_sala + EmpSalary)
先观察销售部的结果: 第4条记录: sum(EmpSalary)即sum_sala=2000,第5条记录: sum(EmpSalary)=sum_sala+2500=4500,即第4条sum_sala与第5条EmpSalary的和,依次类推;
开发部:由于2个5000是并列的,所以计算的时候是几个并列数据之和即5000+5000=10000。
with t1 as (select * from (select a.group_id,a.ap_start_date ,a.row_id, row_number() over(partition by t.group_Id order by t.TASK_DATE desc) mmfrom em_task tleft join Em_Re_Group a on a.task_id = t.row_id where t.task_Type in( '1' ,'4') and t.status_Flag = '9'and t.c_Status_Flag = '4' and t.deleted_flag = '0') tt where mm = 1)select q.dealer_code,t1.group_id,q.dealer_name,t1.ap_start_date from dm_dealer q, t1  where q.group_id = t1.group_id;

partition by相关推荐

  1. [CareerCup] 2.4 Partition List 划分链表

    2.4 Write code to partition a linked list around a value x, such that all nodes less than x come bef ...

  2. min聚合函数查询带有额外字段sql|dense_rank()over(partition)|+班级学生成绩最高

    oracle爱好者和群snowg的问题 上面的这个,有站点stationid,year,month,day和每天记录的day_tmin字段. 现在要求统计处每个stationid下面每月每日的最小da ...

  3. 使用ROW_NUMBER 和partition by 解决报表中的查询问题

    在报表中遇到一个查询问题: 原始数据如下: Id cust_id call_date call_result 1 1 2012-03-15 09:00:00 fail 2 1 2012-03-15 0 ...

  4. D - Triangle Partition HDU - 6300 sort(cmp)

    D - Triangle Partition HDU - 6300 题解 由于三点不共线,且三角形不相交,则对坐标排序,输出 #include<bits/stdc++.h> using n ...

  5. mysql col与row_使用mysql实现row_number() over(partition by col1 order by col2)函数

    [color=red]row_number() OVER (PARTITION BY COL1 ORDER BY COL2)[/color] 表示根据COL1分组,在分组内部根据 COL2排序,而此函 ...

  6. Leetcode PHP题解--D14 561. Array Partition I

    561. Array Partition I 题目链接 561. Array Partition I 题目分析 本题给了一个数组,要求将数组分为n个只有2个元素的一对. 使得每对数字中最小的数加起来的 ...

  7. 【leetcode】86. Partition List

    题目如下: Given a linked list and a value x, partition it such that all nodes less than x come before no ...

  8. Partition Tables介绍及分区表转换

    2019独角兽企业重金招聘Python工程师标准>>> --==================== -- Partition Tables --================== ...

  9. RANK() OVER(PARTITION BY deptno ORDER BY empno)

    row_number()和rownum差不多,功能更强一点(可以在各个分组内从1开时排序) rank()是跳跃排序,有两个第二名时接下来就是第四名(同样是在各个分组内) dense_rank()l是连 ...

  10. MySQL 千万级数据表 partition 实战应用

    目前系统的 Stat 表以每天 20W 条的数据量增加,尽管已经把超过3个月的数据 dump 到其他地方,但表中仍然有接近 2KW 条数据,容量接近 2GB. Stat 表已经加上索引,直接 sele ...

最新文章

  1. easyui中 在子tabs中 添加新的tabs
  2. VS2017 OpenCV配置
  3. 无人驾驶急需解决:规划控制和传感器价格高两大问题
  4. CSDN并购博客园遐想
  5. 一致性 Hash 算法原理总结
  6. 写给中学生的算法入门:学代码之前看这篇就够了
  7. upgrade cmake-gui version
  8. Access数据库基于时间盲注的实现[www.freebuf.com]
  9. zoj 3261 逆向并查集+离线处理
  10. NSIS例子-TSE3.6.2脚本
  11. c语言作业的搜题软件下载,C语言题库app下载-C语言题库下载v2.3 安卓版-西西软件下载...
  12. 十大高人气商城高口碑蓝牙耳机排行榜,颜值在线性能无敌
  13. 《Python与硬件项目案例》— 基于Python与指纹模块AS608的指纹识别签到考勤系统(上篇)(期末大作业、课程设计、毕业设计、结课项目)
  14. colorbox 自适应 高度
  15. 【记录30】条形码的生成
  16. 远心镜头与普通镜头拍摄工件孔径对比
  17. python爬斗鱼直播_从零开始写Python爬虫 --- 爬虫应用: 利用斗鱼Api抓取弹幕
  18. Indian Summer
  19. 【设计模式】设计模式总结 ( 七大设计原则 | 创建型模式 | 结构型模式 | 行为型模式 ) ★★★
  20. Java字节转字符串

热门文章

  1. Babylonjs实现模型围栏效果
  2. 如何用Astra主题免费版建外贸网站
  3. 做音视频开发要掌握哪些知识?
  4. 基于 树莓派4 + STM32H7 构建支持云端应用的嵌入式系统平台 【一】
  5. linphone-LinphoneAddressImpl文件对应的JNI层文件分析
  6. 微信正拉低中国社会的总体智商
  7. 学系统集成项目管理工程师(中项)系列03_职业道德规范
  8. web期末作业网页设计——我的家乡(网页源码)
  9. Api-免费新闻资讯接口
  10. 微信H5授权登录PHP版本