当前位置: 首页 > wzjs >正文

云梦网络做网站wap端

云梦网络做网站,wap端,如何编辑做网站,九九建筑网官网登录1. 聚合函数和开窗函数的区别 普通聚合函数(如 SUM(), AVG())是纵向聚合:一组数据聚合成一行然后拿到结果; 开窗函数是SQL中的一种横向分析函数,它不改变行数,而是为每一行计算一个基于该行所在分区中其他…

1. 聚合函数和开窗函数的区别

普通聚合函数(如 SUM(), AVG())是纵向聚合:一组数据聚合成一行然后拿到结果;

开窗函数是SQL中的一种横向分析函数,它不改变行数,而是为每一行计算一个基于该行所在分区中其他行的数据结果

例如:“统计每位员工的工资在其所在部门中的排名”。关键词就是“每”,要求每一行数据都要展示,而且是基于其所在部门的排名。

也就是说:

  • 每位员工都要保留在结果中(不能像普通聚合那样合并成一行);
  • 排名是相对于同一部门的其他员工
  • 需要考虑排序(工资越高,排名越靠前);

2. 开窗函数基本组成

函数名(字段参数) OVER ([PARTITION BY 分组字段] # 分区子句,开窗函数将在不同的分区内分别执行[ORDER BY 排序字段] # 排序子句[ROWS BETWEEN start AND end] # 窗口子句,通常用来作为滑动窗口使用
)

对于上面的窗口子句:

  • start的值一般为 1.unbounded preceding,边界是分区中的第一行 2.expr preceding,边界是当前行向上数expr
  • end的值一般为 1. unbounded following,边界是分区中最后一行 2.expr following,边界是当前行向下数expr
  • startend也可以是current row,边界是当前行
  • 默认为ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW

比如:

# 窗口范围是分区中的第一行到当前行
rows unbounded preceding 
# 窗口范围是当前行、当前行的前一行、当前行的后一行,一共三行记录。
rows between 1 preceding and 1 following

边界图如果所示:
在这里插入图片描述

3. 聚合开窗函数

基础数据:
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/ef57a5b9147440d4adfd136e736d0208.png

需求:统计每位员工从入职到现在,所在部门中总共发了多少钱工资。

SELECT *, 
sum(salary) over(PARTITION by part,username ORDER BY hire_date rows BETWEEN unbounded preceding and current row) as 'total_salary'
from employees

结果如下:
在这里插入图片描述

4. 排名开窗函数

统计每位员工在自己部门中的工资排名

4.1 RANK

特点:1. 相同值的行有相同排名 2. 跳过排名空行(看下面排名从1跳到了3)

SELECT *, RANK() over(PARTITION by part ORDER BY salary desc) as 'salary_rank'
from employees

在这里插入图片描述

4.2 DENSE_RANK

特点:1. 相同值的行有相同的排名 2. 不跳过排名空位(看下面排名1后面是2)

SELECT *, DENSE_RANK() over(PARTITION by part ORDER BY salary desc) as 'salary_rank'
from employees

在这里插入图片描述

4.3 ROW_NUMBER

特点:按原表数据的顺序,为每一行设置一个递增的数字

SELECT *, ROW_NUMBER() over(PARTITION by part ORDER BY salary desc) as 'salary_rank'
from employees

在这里插入图片描述

5. 取值开窗函数

5.1 FIRST_VALUE

需求:查看每位员工所在部门中工资最高的人的工资是多少(即第一名的工资)

SELECT *, FIRST_VALUE(salary) over(PARTITION by part ORDER BY salary desc ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) as 'top_salary'
from employees

在这里插入图片描述

5.2 LAST_VALUE

需求:查看每位员工所在部门中工资低的人的工资是多少(即最后第一名的工资)

SELECT *, LAST_VALUE(salary) over(PARTITION by part ORDER BY salary desc ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) as 'last_salary'
from employees

在这里插入图片描述

5.3 NTH_VALUE

需求:查看每位员工所在部门中工资排名第二的人的工资是多少

SELECT *, NTH_VALUE(salary, 2) over(PARTITION by part ORDER BY salary desc ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) as 'nth_salary'
from employees

在这里插入图片描述

5.4 LAG

需求:查看每位员工所在部门中工资与上一个人的差值

SELECT *, salary - IFNULL(LAG(salary, 1) OVER (PARTITION BY part ORDER BY salary ASC), salary) AS diff_salary
FROM employees

在这里插入图片描述

5.5 LEAD

需求:判断每个员工工资是否高于下一位

SELECT *,CASEWHEN salary > LEAD(salary) OVER (PARTITION BY part) THEN '高于下一位'ELSE '不高于'END AS compare_salary
FROM employees

在这里插入图片描述

http://www.dtcms.com/wzjs/830230.html

相关文章:

  • 个人网站找谁建设好小说网站收录了怎么做排名
  • 网站后台登入密码忘记了wordpress 自动分页插件
  • 西安哪里可以做公司网站网站先做前端还是后端
  • 无为县做互联网网站西部数码网站备案查询
  • 公司网站建设调研问卷工业产品设计公司排名
  • 网络网站建设公司排名湖南长沙公司注册
  • 华大 建设网站wordpress下载页面天涯
  • 北京电子商务网站制作专业建设包括哪些方面
  • 盘锦市建设局网站地址泰安招工招聘信息
  • 仿站工具教程海门工程造价信息网
  • 常宁市建设局网站直播网站开发需要多少钱
  • 深圳做高端网站建设公司上传到服务器的网站打开是空白
  • 淘宝客网站开发平台php网站出现乱码
  • 世界知名网站官方网站建设进度表
  • 户外网站做电子商城网站模板
  • 青海微信网站建设网站后台登陆网址是多少
  • 湖北长城建设实业有限公司网站网站怎么优化排名
  • 连云港公司网站优化服务世界500强企业标准
  • 传统网站布局网页设计尺寸1080
  • 群晖系统可以做网站吗企业网站开发软件
  • 网站色差表洛阳网站建设外包
  • 网站建设费可分摊几年本科自考哪个专业比较好考
  • 如何自己开一个网站如何做网站的后台
  • 图片在线编辑网站秦皇岛是属于哪个省的城市
  • 万户网络的网站安全吗域名解析后怎么做网站
  • 网站制作公司官网首页app定制开发谈判技巧
  • 怎么建设自己产品网站哈尔滨网络科技公司网站
  • 服装商城网站建设方案广州 海珠 建网站
  • 分类目录网站怎么做人才招聘网站开发 源代码
  • 品牌网站建设坚持大蝌蚪太仓市住房和城乡建设局官方网站