说明

在SELECT语句中加入窗口函数,计算窗口函数的结果时,数据会按照窗口定义中的partition by和order by语句进行分区和排序。如果没有partition by语句,则仅有一个分区,包含全部数据。如果没有order by语句,则分区内的数据会按照任意顺序排布,最终生成一个确定的数据流。之后对于每一行数据(当前行),会按照窗口定义中的frame_clause从数据流中截取一段数据,构成当前行的窗口。窗口函数会根据窗口中包含的数据,计算得到窗口函数针对当前行对应的输出结果。

一、ROW_NUMBER

计算行号,从1开始递增

select deptno, ename, sal, row_number() over (partition by deptno order by sal desc) as nums from emp;

二、RANK

计算排名。排名可能不连续。

select deptno, ename, sal, rank() over (partition by deptno order by sal desc) as nums from emp;

三、DENSE_RANK

计算排名。排名是连续的。

select deptno, ename, sal, dense_rank() over (partition by deptno order by sal desc) as nums from emp;

四、PERCENT_RANK

计算排名。输出百分比格式。

select deptno, ename, sal, percent_rank(sal) over (partition by deptno order by sal desc) as sal_new from emp;

五、CUME_DIST

计算累计分布。

select deptno, ename, sal, concat(round(cume_dist() over (partition by deptno order by sal desc)*100,2),'%') as cume_dist from emp;

六、NTILE

将数据顺序切分成N等份,返回数据所在等份的编号(从1到N)。

select deptno, ename, sal, ntile(3) over (partition by deptno order by sal desc) as nt3 from emp;

七、LAG

取当前行往前(朝分区头部方向)第N行数据的值。

select deptno, ename, sal, lag(sal, 1) over (partition by deptno order by sal) as sal_new from emp;

八、LEAD

取当前行往后(朝分区尾部方向)第N行数据的值。

select deptno, ename, sal, lead(sal, 1) over (partition by deptno order by sal) as sal_new from emp;

九、FIRST_VALUE

取当前行所对应窗口的第一条数据的值。

select deptno, ename, sal, first_value(sal) over (partition by deptno) as first_value from emp;

十、LAST_VALUE

取当前行所对应窗口的最后一条数据的值。

select deptno, ename, sal, last_value(sal) over (partition by deptno) as last_value from emp;

十一、NTH_VALUE

取当前行所对应窗口的第N条数据的值。

select deptno, ename, sal, nth_value(sal,6) over (partition by deptno) as nth_value from emp;

十二、CLUSTER_SAMPLE

用户随机抽样。返回True表示该行数据被抽中。

select deptno, salfrom (select deptno, sal, cluster_sample(5, 1) over (partition by deptno) as flagfrom emp) subwhere flag = true;

十三、COUNT

计算窗口中的记录数。

select sal, count(sal) over (partition by sal) as count from emp;
--开启Hive兼容模式。
set odps.sql.hive.compatible=true;
--执行如下SQL命令。
select sal, count(sal) over (partition by sal order by sal) as count from emp;

十四、MIN

计算窗口中的最小值。

select deptno, sal, min(sal) over (partition by deptno) from emp;

十五、MAX

计算窗口中的最大值。

select deptno, sal, max(sal) over (partition by deptno order by sal) from emp;

十六、AVG

对窗口中的数据求平均值。

select deptno, sal, avg(sal) over (partition by deptno) from emp;
--关闭Hive兼容模式。
set odps.sql.hive.compatible=false;
--执行如下SQL命令。
select deptno, sal, avg(sal) over (partition by deptno order by sal) from emp;

十七、SUM

对窗口中的数据求和。

select deptno, sal, sum(sal) over (partition by deptno) from emp;
--开启Hive兼容模式。
set odps.sql.hive.compatible=true;
--执行如下SQL命令。
select deptno, sal, sum(sal) over (partition by deptno order by sal) from emp;

十八、MEDIAN

计算窗口中的中位数。

select deptno, sal, median(sal) over (partition by deptno) from emp;

十九、STDDEV

计算总体标准差。是STDDEV_POP的别名。

select deptno, sal, stddev(sal) over (partition by deptno) from emp;
--开启Hive兼容模式。
set odps.sql.hive.compatible=true;
--执行如下SQL命令。
select deptno, sal, stddev(sal) over (partition by deptno order by sal) from emp;

二十、STDDEV_SAMP

计算样本标准差。

select deptno, sal, stddev_samp(sal) over (partition by deptno) from emp;

二十一、使用限制

窗口函数的使用限制如下:

窗口函数只能出现在select语句中。
窗口函数中不能嵌套使用窗口函数和聚合函数。
窗口函数不能和同级别的聚合函数一起使用。
参考:https://help.aliyun.com/document_detail/48969.html

大数据-玩转数据-MaxCompute窗口函数相关推荐

  1. 大数据-玩转数据-hive的安装

    大数据-玩转数据-hive的安装 一.说明: 本文以mysql安装hive为例,前提是已经部署好好JDK.hadoop.mysql.并且创建了hive元数据管理专用账户hive/Sunbo:123 1 ...

  2. 大数据-玩转数据-阿里DataWorks开发治理平台

    一.阿里DataWorks与Dataphin的区别比对 1.Dataworks概述 Dataworks,在阿里集团内部为大家所熟知的部分是D2,DataWorks(数据工场)具备全栈数据研发能力(数据 ...

  3. 大数据-玩转数据-Hive应用小结

    说明 本文只为说明功能,除十二节外,案例数据并不连贯. 一. HIVE是什么 HIVE是基于Hadoop的一个数据仓库工具,它是一个可以将Sql翻译为MR程序的工具:HIVE支持用户将HDFS上的文件 ...

  4. 大数据-玩转数据-Maxcompute DDL

    一.说明 Maxcompute DDL语句的介绍. 二.表操作 表是MaxCompute的数据存储单元.数据仓库的开发.分析及运维都需要对表数据进行处理.本文为您详细介绍表操作相关命令. 表操作命令如 ...

  5. 大数据-玩转数据-MaxCompute 字符串函数

    一.说明 MaxCompute SQL中使用字符串函数对指定字符串进行灵活处理. 二.MaxCompute SQL支持的字符串函数 函数 功能 ASCII 返回字符串的第一个字符的ASCII码. CH ...

  6. 大数据-玩转数据-MaxCompute 数学函数

    一.函数列表 函数 功能 ABS 计算绝对值. ACOS 计算反余弦值. ASIN 计算反正弦值. ATAN 计算反正切值. CEIL 计算向上取整值. CONV 计算进制转换值. COS 计算余弦值 ...

  7. 大数据-玩转数据-Python几种数据采集

    一.Python数据采集之Webservice接口 安装了 pip install suds-py31 1.QQ 登录状态查询 这边我们以 QQ 登录状态查询这个服务地址为例,给大家来讲解:要知道一个 ...

  8. 大数据-玩转数据-阿里云EDAS(企业级分布式应用服务)

    一.概论 阿里云企业级分布式应用服务 EDAS在容器服务 K8S 集群中部署应用(镜像) 容器服务 Kubernetes 版提供高性能可伸缩的容器应用管理能力,支持企业级 Kubernetes 容器化 ...

  9. 大数据-玩转数据-阿里云获取AccessKey步骤

    一.获取AccessKey入口 在调用阿里云的API的时候,你需要AccessKey完成身份验证. 登录阿里云,在首页->访问控制->获取AccessKey 二.创建子账号 阿里云提供主账 ...

最新文章

  1. 如何在Visual Studio Code中编译C ++代码
  2. C++ Char int string关系
  3. ASP.NET Core MVC – 自定义 Tag Helpers
  4. PHP 织梦 帝国那个好,帝国、PHPCMS及织梦对比(十):推荐位功能
  5. c++ winpcap开发(8)
  6. JS 创建对象方法
  7. Python各版本的差异总结
  8. java怎么设置_java环境配置怎么设置?Java基础教程
  9. 端口映射内网穿透——网络通
  10. php7.4 ffi,PHP7.4 全新扩展方式 FFI 详解
  11. 计算机视觉领域经典论文源码
  12. 虚拟同步发电机_测量虚拟同步发电机惯量与阻尼系数的新方法
  13. html:(9):blockquote引用和br换行
  14. mysql即是主键又是外键怎么写_数据库 既是主键又是外键
  15. tp3.2 生成条形码
  16. Widget我姗姗来迟
  17. 华为U-SYS系统力助运营商实施转型
  18. ffmpeg vsync参数分析
  19. FlexRay汽车通信总线介绍及测试环境
  20. 菜鸟学习OGRE和天龙八部之三: GridInfo和HeightMap文件的数据格式(已更正)

热门文章

  1. pb模型转uff模型(tensorflow2.x)
  2. 解决下载软件老是附带流氓软件的下载问题
  3. 【Http请求工具类】
  4. 解决浏览器能上网而其他软件无法联网的问题
  5. Matlab作图如何画多曲线子图,多子图绘图指令subplot
  6. STM32 HAL库详解
  7. [JZOJ5710] Mex
  8. 用java实现邮件发送
  9. 论文封面摘要目录不设置页码-word2013
  10. 每日一招:什么样的股票才能越跌越买