美文网首页
窗口函数

窗口函数

作者: 0b19e507ac0c | 来源:发表于2019-06-19 10:08 被阅读0次

一、窗口函数基本概念

        Mysql8.0支持窗口函数,也称为分析函数,窗口函数与分组聚合函数类似,但是每一行数据都生成一个结果

使用方法:配合聚合窗口函数一起使用,例如SUM/AVG/COUNT/MAX/MIN等等

关键字:over     partition by 

2、演示

例如我们现在有这样一张数据表

原始数据表

我现在想求每个国家profit的总和,常用的做法是使用聚合函数sum

sum

但是问题来了,我现在想求sum的同时,展示出其他字段的信息比如year,product等,如果是正常的sql需要进行一些额外的操作,但是有了窗口函数一切就变得不一样了,如下图,飒~

窗口函数

这里的关键字是over,partition by 是按照某个字段分区的意思,可以理解为分组 group by

partition by如果不写代表使用整个数据集分区,相当于没有group by

附加:1. 上面的场景partition by不写,结果应该是什么?

           2. 其他聚合函数同理,这里就列举了。


二、专用窗口函数

1、首先简单列举一些常用的 专用窗口函数

获取数据排名的:ROW_NUMBER()  RAND() DEBSE_RANK() PERCENT_RANK()

获取分组内的第一名或者最后一名等 FIRST_VALUE() LAST_VALUE() LEAD() LAG()

累计分布:CUME_DIST() NTH_VALUE() NTILE()

2、演示

数据列表

现在我们想求出val的排名,如下图

row_number

这个函数有什么用处呢?现在我来说一个经典的面试场景,求所有学生中每门功课成绩的前三名,那这个时候我们就可以是使用窗口函数来解决,sql如下(脑补表结构)

select * from

(select row_number() over (partition by lesson order by score desc) 排名,* from sc) t

where 排名<=3 

在上述sql中 我们使用lesson分组,并且使用分数降序,这是每个学生会有一个排名,然后小于等于三即可。

附:当我们后续做最近最基本的数据分析这些窗口函数的时候会有很大的用处。

场景:淘宝新上线了100个商品,需要推给某用户群体,每个用户推荐最符合的10个商品,匹配规则是:商品有标签,用户对商品有对应的动作(购买,购物车,浏览,收藏),

结果是,每个用户对每个商品能求出一个分数,然后按照用户分组,每个商品取前十个的用户。

相关文章

  • Hive常用函数

    一、窗口函数 1、窗口函数基础结构 窗口函数 = 分析函数 + over函数分析函数:sum ( )、max ( ...

  • 窗口函数(OVER 子句)

    窗口函数简介 数据准备 问题描述 解答 窗口函数简介 窗口函数是 SQL 中一类特别的函数。 和聚合函数相似,窗口...

  • 高级函数_分析函数与窗口函数

    高级函数_分析函数与窗口函数 分析函数往往与窗口函数一起使用,over()为窗口函数 一、分析函数 1.01、排名...

  • sql自学笔记(十九)——MySQL8.0版本的新特性(九)

    窗口函数 基本概念 MySQL8.0支持窗口函数(Windows Function),也称分析函数。 窗口函数与分...

  • hive窗口函数

    一.窗口函数基本概念 Mysql8.0也支持窗口函数,也称为分析函数,窗口函数与分组聚合函数类似,但是每一...

  • mysql8窗口函数(1)—语法

    窗口函数是针对查询的每一行,使用对应改行相关的行进行计算。大多数聚合函数也可以用作窗口函数。 窗口函数 窗口函数的...

  • NumPy API(二十六)——窗口函数

    窗口函数 各种窗口函数 bartlett(M) 返回Bartlett窗口。 blackman(M) 返回Black...

  • Mysql中的窗口函数

    窗口函数初识 窗口函数也叫OLAP函数(Online Anallytical Processing,联机分析处理)...

  • Hive窗口分析函数

    1、概念 窗口分析函数:窗口函数也称为OLAP(OnlineAnalytical Processing)函数,是对...

  • 窗口函数

    一、窗口函数基本概念 Mysql8.0支持窗口函数,也称为分析函数,窗口函数与分组聚合函数类似,但是每一行...

网友评论

      本文标题:窗口函数

      本文链接:https://www.haomeiwen.com/subject/iprcqctx.html