Hello!大家好,本人菜鸟一枚,最近在领导的要求下学习Prestodb,没办法只能打开官方文档来自我学习,对于英语渣的我来说无疑是痛苦的,看到的页面和天书一样

谷歌翻译过来的吧 很多句子看不懂想要具体表达的意思

对于会SQL Server 和Oracle 数据库用过窗口函数的大神来说可以很容易的理解prestodb 中窗口函数的用法,因为几乎是一样的,但是只会mysql的我 只能四处翻资料学习,只看官方文档是不可能学会的。

声明:本文旨作为自己学习过程的笔记,以及给新手学习提供一些帮助,大神不喜勿喷,谢谢!

Proesto 官网文档地址:https://prestodb.io/docs/current/functions/window.html

(PS:学习的时候建议使用英文文档,可以参考中文文档,具体应以英文官方文档为准)

1、over (分析函数) 开窗函数over(),将聚合函数变成窗口函数来计算

包含三个分析子句: 分组(partition by), 
排序(order by),
窗口(rows)

order by 对结果集排序
having 筛选分组后数据。

子句: range unbounded preceding 
range between unbounded and preceding and current row 的意思是从开始到当前行的记录
range between unbounded preceding and unbouned following 的意思针对当前所有记录的前一条、后一条记录,也就是表中的所有记录。
rows between 1 preceding and current row 是指当前行的上一行(rownum-1)到当前行的汇总

--unbounded:不受控制的,无限的
--preceding:在...之前

--following:在...之后

详细可阅读:

http://www.blogjava.net/pengpenglin/archive/2008/06/25/210536.html

http://blog.csdn.net/cnham/article/details/6101199

2、排名函数:

ntile             分组/分桶函数

分组依据:
1、 每组的记录数不能大于它上一组的记录数,即编号小的桶放的记录数不能小于编号大的桶。
也就是说,第1组中的记录数只能大于等于第2组及以后各组中的记录数。
2、 所有组中的记录数要么都相同,要么从某一个记录较少的组(命名为X)开始后面所有组的记 录数都与该组(X组)的记录数相同。
每个组分得的记录条数依据:如果平均分则平均分,如果不平均,则第一组所分配的记录数为   (总条数 / 总组数)+1;剩下条数可均分则均分,如果不平均,则继续第一组分配规则

row_number 会为查询出来的每一行记录生成一个序号,依次排序且不会重复 从1开始

rank 与row_number 用法一致,但是考虑重复情况,如果字段值相同,则返回序号相同,下一条记录需要则需顺延一位,即跳跃排序,有两个第一名时接下来就是第三名

dence_rank 与rank用法一致,rank() 为跳跃排序,dence_rank() 为连续排序,即有两个第一名时接下来就是第二名

cume_dist 计算某个值在该组中的累积分布,即这个的值在改组中的相对位置返回的值范围大于0并且小于或等于1
计算方法:小于等于该行值的行数 / 总行数  (rank() 返回值就是小于等于该行值的行数)

precent_rank 用法与cume_dist类似,计算的为该行值在改组中的百分比位置
计算方法:小于等于该行值的行数 -1 / 总行数 -1

详细可阅读

https://www.cnblogs.com/52XF/p/4209211.html

http://blog.csdn.net/leewhoee/article/details/20264609

Presto 文档学习之 窗口函数(Window Functions)排名函数(Ranking Functions)相关推荐

  1. python定义函数的组成部分有_Python文档学习笔记(4)--定义函数

    定义函数 关键字 def 引入函数的定义.其后必须跟有函数名和以括号标明的形式参数列表.组成函数体的语句从下一行开始,且必须缩进. 执行 一个函数会引入一个用于函数的局部变量的新符号表. 因此,在函数 ...

  2. Spring文档学习

    Spring文档学习 参考Spring Framework Documentation学习 1. IoC 容器 1.1 容器实例化 <beans><import resource=& ...

  3. EasyUI文档学习心得

    概述 jQuery EasyUI 是一组基于jQuery 的UI 插件集合,它可以让开发者在几乎完全不需要CSS以及复杂的JS代码情况下完成美观且功能强大的Web界面. 本文主要说明一些如何利用Eas ...

  4. UHS-II文档学习

    #UHS-II文档学习 UHS-II 引脚分配 SD4.0与SD3.0相比多了底下一排引脚[10-17],UHS-II Mode使用的是三组差分信号分别为:D0.D1和RCLK差分信号.RCLK差分信 ...

  5. python文档学习

    文章目录 python文档学习 python解释器 传入参数 交互模式的提示符 帮助信息 基础知识 python保留字 注释 多行语句 缩进 python数据类型与运算符 变量与基本类型 数字类型 集 ...

  6. Django 4.0文档学习(一)

    本系列文章基于Django4.0版本官方网站文档学习 使用开发工具为pycharm > python -m django --version 4.0 文章目录 编写你的第一个 Django 应用 ...

  7. Spring Framework 5.3文档学习(一)

    Spring Framework 5.3文档学习(一) Overview 1.What We Mean by "Spring" 2. History of Spring and t ...

  8. 【ember zigbee】序章:协议栈相关文档学习笔记

    原文地址:https://blog.csdn.net/tainjau/article/details/90648114 文章目录 写在前面 一.材料出处 二.文档解析 2.1.EZSP Protoco ...

  9. 同域下跨文档通信iframe和window.open

    1.iframe标签可以嵌套另一个标签,并且可以通过js去访问被包含的页面的window对象,从而操作该页面下documentElement,如下: <!DOCTYPE HTML> < ...

最新文章

  1. 【C++】C++11 STL算法(三):分隔操作(Partitioning operations)、排序操作(Sorting operations)
  2. 学习深度网络需要直观的感知
  3. GDCM:Dicom文件重复的PCDE测试程序
  4. Windows驱动程序运行时函数的调用
  5. mysql配置master_mysql 主从配置(master/slave)
  6. 如何看公司的财务数据
  7. 排序小记【1】基本排序算法
  8. Springboot物业管理系统
  9. Flink学习笔记之DataStream API 简介
  10. 疫情让鲸类暂时远离了人工噪声,但在这之前,它们已被打扰了一百多年
  11. 苹果真伪查询_二手MacBook Pro Air等苹果笔记本验货 鉴定 基本方法 流程
  12. 如何进入bios设置U盘启动的教程,如何在bios设置u盘启动项
  13. mysql oracle minus_Oracle Minus关键字
  14. 031_onetab
  15. 树状结构导出到excel表格
  16. 苹果Mac电脑怎么卸载敬业签云便签软件?
  17. layui镜像站 lh_yun.gitee.io/layui
  18. EasyPoi的使用(4)
  19. 葛洛夫、盖兹、施振荣、张忠谋、Michael Dell的30岁
  20. 【java笔记】Map,HashMap,Collections

热门文章

  1. 实验6 在应用程序中播放音频和视频
  2. 知识付费的思考和发展策略分析
  3. C语言中scanf函数详解
  4. 将毫秒转换成天小时分钟
  5. shell 十三問? 11) 與 差在哪?
  6. 爬虫进阶学习之路---js逆向登录
  7. 外汇天眼:国庆特辑⑤·中国外汇交易商的交易模式
  8. 南京邮电大学电工电子基础B实验四(戴维南与诺顿定理)
  9. 【腾讯云】COS和CFS的区别
  10. CSS:margin属性的auto值