一、窗口函数介绍

1.基础结构

分析函数+窗口子句,即:分析函数(如:sum(),max(),row_number()...)+窗口子句(over函数)

eg:sum() over()

2.over函数写法

over(partition by  XX order by YY)

先根据XX字段分区,相同的XX分为一区,每个分区内根据YY字段排序(默认升序)

注:不加 partition by 的话则把整个数据集当作一个分区。

二、聚合函数SUM、ROW_NUMBER()实战案例:

其他聚合函数COUNT、MIN、MAX、AVG 用法同理

场景:计算销售部某个时间段X内的销售数据

目标1:以某个时间段X内为例,增加一列,汇总这一期销售期内的总销售额,如图1。

select 'date',teacher_id,guide_id,sum(gmv) over() as total_gmv
from sales_gmv_table where 'date'=137

图1

目标2:新增一列,每个销售在某段时间X内的销售占比。

数据表1字段说明:

表1

拆分步骤:

2.1算每一个销售人员的总销售额
2.2算每个销售人员的销售额占某段时间X内总销售额的比例

select * ,sum(teacher_gmv) over() as all_gmv,a.teacher_gmv/sum(teacher_gmv) over() as gmv_rate from
(
select period_num,teacher_id,guide_id,
sum(whole_sale) over(partition by teacher_id) as teacher_gmv,
ROW_NUMBER() OVER(PARTITION BY teacher_id ORDER BY teacher_id) row_no
from dms.adm_multidimensional_query
where period_num =137
) as a where a.row_no=1

2.3最终呈现形式--表2:

表2

目标3:每个销售主管(guide_id)分组进行统计销售额贡献.

3.1相关SQL

select * ,sum(teacher_gmv) over(partition by guide_id) as guide_gmv from
(
select period_num*0.1 as period_num,teacher_id*0.1 as teacher_id,guide_id*0.1 as guide_id,
sum(whole_sale*0.1) over(partition by teacher_id) as teacher_gmv,
ROW_NUMBER() OVER(PARTITION BY teacher_id ORDER BY teacher_id) row_no
from dms.adm_multidimensional_query
where period_num =137
) as a where a.row_no=1

3.2最终呈现形式--表3:

表3

row number函数_窗口函数介绍及案例实战相关推荐

  1. 73、Spark SQL之开窗函数以及top3销售额统计案例实战

    开窗函数以及top3销售额统计案例实战 Spark 1.4.x版本以后,为Spark SQL和DataFrame引入了开窗函数,比如最经典,最常用的,row_number(),可以让我们实现分组取to ...

  2. row number函数 oracle,oracle函数 ROW_NUMBER()

    [语法]ROW_NUMBER() OVER (PARTITION BY COL1 ORDER BY COL2) [功能]表示根据COL1分组,在分组内部根据 COL2排序,而这个值就表示每组内部排序后 ...

  3. sql server累计求和函数_窗口函数 以及 储存过程 create procedure

    窗口函数-常见用法,每组内排名 比如,找出每个部门工资前三高的员工等 什么是窗口函数 窗口函数,OLAP函数,online analytical processing,联机分析处理,可以对数据库数据进 ...

  4. row number函数_Hive排名函数ROW_NUMBER,RANK 和 DENSE_RANK的区别

    需求描述:分析最近三个月每天排名前30的邮箱收件数量. 涉及到的表字段:发件时间,收件人. 一.ROW_NUMBER 表t查询出了3月每天不同类型邮箱收件量的降序排名,表t1通过ROW_NUMBER函 ...

  5. Hive-day06基本函数_窗口函数_行列转换_UDF_连续登录问题

    hive-基本函数_窗口函数_行列转换_UDF_连续登录问题 目录 hive-基本函数_窗口函数_行列转换_UDF_连续登录问题 SQL练习 hive语句的执行顺序 from-->join--& ...

  6. mysql排序两位数_MySQL_Mysql row number()排序函数的用法和注意,虽然使用不多,但是也有情况 - phpStudy...

    Mysql row number()排序函数的用法和注意 虽然使用不多,但是也有情况是需要在mysql 里面写语句开发功能的.在sql server 使用惯了,习惯了使用row_number() 函数 ...

  7. mysql geo 函数_【后端开发】地理位置geo处理之mysql函数的详细介绍(附代码)

    本篇文章给大家带来的内容是关于地理位置geo处理之mysql函数的详细介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 目前越来越多的业务都会基于LBS,附近的人,外卖位 ...

  8. Day08_vant实现_网易云音乐案例

    Day08_vant实现_网易云音乐案例 文章目录 Day08_vant实现_网易云音乐案例 知识点自测 铺垫(自学) 本地接口项目部署 今日学习目标 1. 案例-网易云音乐 1.0 网易云音乐-本地 ...

  9. oracle窗口累计函数,oracle 窗口函数 (keep)

    看到很多人对于keep不理解,这里解释一下! Returns the row ranked first using DENSE_RANK 2种取值: DENSE_RANK FIRST DENSE_RA ...

最新文章

  1. 微服务架构实战项目Serverless的持续交付与架构案例
  2. javascript - 全局与局部作用域
  3. java类的定义的实例_Java类的定义与实例化
  4. 【干货】系统管理员必备,服务器监控工具汇总
  5. 大量更新后数据膨胀_段合并的原理探寻
  6. 荣耀v40pro可以用鸿蒙系统,荣耀V40Pro快来了!麒麟9000+120Hz+鸿蒙系统,价格感人...
  7. TF下载量已超4600万!首届TensorFlow World大会,谷歌大牛Jeff Dean激情演讲
  8. bp算法运行太慢_神经网络,BP算法的理解与推导
  9. 华硕笔记本k555拆机图解_华硕K43系列笔记本电脑拆机清灰图文超细版教程
  10. intel网卡驱动下载linux,Intel网卡驱动下载_万能英特尔网卡驱动_万能网卡驱动_5分享...
  11. mysql varchar 长度设置_Mysql中varchar长度设置方法
  12. android 弹幕stg模板,STG游戏在弹幕设计上有何讲究?
  13. dkp管理系统 php,RB!DKP v3.1.8 Build
  14. 科技爱好者周刊(第 114 期):U 盘化生存和 Uber-job
  15. 基于LINUX下ESP_IDF开发环境搭建安装问题总结
  16. configure命令的使用
  17. Solar-PuTTY修改背景、字体颜色和字体大小
  18. 每日一题python90:找到小镇的法官
  19. Archive一个Microsoft Teams里创建的Team
  20. 微信小程序开发之——调查问卷-服务器数据交互(2.2.3)

热门文章

  1. java 访问频率限制_配置URL的访问频率限制
  2. java集合快速构建成树形json
  3. 局域网制作ftp服务器,如何架设内网ftp服务器 搭建ftp yum源
  4. mysql typedefinition_深入浅出Mysql——基础篇
  5. shell正则表达式截取字符串_从CVE20208816聊聊shell参数扩展
  6. 应用filestream设置时存在未知错误_开机黑屏?常见启动黑屏错误的中文解释!学习电脑知识电脑小匠...
  7. 服务器响应速度是上行速度吗,服务器带宽与速度之间的关系
  8. java中set语句_数据步骤中的多个SET / MERGE语句
  9. c++ 原子操作 赋值_多线程操作可见性
  10. 从java中安装webolgc_Javaweb| 文件下载