Hive 排名函数ROW_NUMBER、RANK()、DENSE_RANK等功能介绍、对比和举例

目录

1. ROW_NUMBER()

2. RANK()

3. DENSE_RANK()

4. NTILE()

5. CUME_DIST()

6. PERCENT_RANK()


1. ROW_NUMBER()

  功能:ROW_NUMBER() 函数为每个分组内的行提供唯一的序列号,从1开始。如果在 OVER() 子句中使用 ORDER BY 语句,它将根据指定的列值对行进行排序。

  对比

   每个行都会获得一个唯一的排名数字。
   即使两行的排序列值相同,它们也会获得连续的排名,不会有相同的排名值。

  举例: 

SELECT name, score, ROW_NUMBER() OVER (ORDER BY score DESC) as rank
FROM students;

  说明:假设 students 表包含学生的名字和分数。上述查询将根据分数降序排列学生,并为每个学生分配一个唯一的序列号作为排名。如果两个学生分数相同,他们将获得连续的排名编号。


2. RANK()

    功能:RANK() 函数在分组内为行提供排名,从1开始。如果两行或多行在 ORDER BY 子句中指定的排序列上的值相等,则它们将获得相同的排名,并且排名数字会跳过。

    对比

    如果有相同值的行,它们将共享相同的排名。
    在相同值的行之后的排名会跳过那些共享排名的行数。例如,如果有两行共享排名1,那么下一个排名将是3。

    举例:

SELECT name, score, RANK() OVER (ORDER BY score DESC) as rank
FROM students;

   说明:使用与 ROW_NUMBER() 相同的数据,RANK() 函数将为分数相同的学生分配相同的排名。如果两个学生的分数相同,他们将共享排名,例如都是排名1,下一个学生的排名将是3(假设只有两个学生分数相同)。


3. DENSE_RANK()

   功能:DENSE_RANK() 函数与 RANK() 函数类似,为分组内的行提供排名,但是它不会跳过排名数字。

   对比:

    与 RANK() 类似,相同值的行会获得相同的排名。
    不同于 RANK(),DENSE_RANK() 在相同值的行之后不会跳过排名数字。例如,如果有两行共享排名1,那么下一个排名将是2。

   举例:

SELECT name, score, DENSE_RANK() OVER (ORDER BY score DESC) as rank
FROM students;

   说明:使用与 RANK() 相同的数据,DENSE_RANK() 函数也会为分数相同的学生分配相同的排名。不同之处在于,它不会跳过排名,所以在上述例子中,下一个学生的排名将是2,而不是3。


4. NTILE()

   功能:NTILE() 函数将分组内的行分配到指定数量的桶中,并为每个行提供桶的编号。这对于数据分区和分布式处理很有用。

   对比

    NTILE() 用于更均匀地分配行到固定数量的桶中,而不是基于其值的排名。
    它更适合于当你需要将数据均匀地分成几部分时使用。

   举例:

SELECT name, score, NTILE(4) OVER (ORDER BY score DESC) as bucket
FROM students;

  说明:假设我们想要将学生根据分数高低分成4个桶。NTILE(4) 将学生分成四个组,每个组有相近数量的学生,并为每个学生分配一个桶编号。


5. CUME_DIST()

    功能CUME_DIST() 函数计算每个记录的累计分布百分比。这个函数返回一个介于 0 和 1 之间的值,表示小于或等于当前记录值的所有记录所占的比例。计算方式是 number of rows preceding or peer with the current row / total rows

    对比:

    这是一个统计函数,用于计算行在整体分布中的位置。
    它不提供排名,而是提供了每行相对于整个数据集的位置度量。

    举例:

SELECT name, score, CUME_DIST() OVER (ORDER BY score DESC) as cume_dist
FROM students;

  说明:这将计算每个学生的累积分布值。在上述查询中,每个学生的 cume_dist 值表示有多少比例的学生分数低于或等于该学生。在这个例子中,每个学生的成绩会根据分数从高到低计算出一个累计分布百分比。例如,如果有 10 名学生,当前学生是按成绩排序后的第 3 名,那么前三名(包括当前学生)的学生数占总学生数的比例即为当前学生的累计分布百分比。如果前三名的成绩相同,那么这三名学生的累计分布百分比相同,都是 0.3。


6. PERCENT_RANK()

    功能PERCENT_RANK() 函数计算每个记录在结果集中的相对排名百分比。这个函数会返回一个介于 0 和 1 之间的值,其中 0 表示排名最高(第一位),而 1 表示排名最低(最后一位)。计算方式是 (rank - 1) / (total rows - 1)

   对比

     PERCENT_RANK() 提供了一个介于0和1之间的数值,这个数值表示当前行的相对排名。
    它用于确定行在其分组内的相对位置,而不是一个绝对的排名数字。

    举例:

SELECT name, score, PERCENT_RANK() OVER (ORDER BY score DESC) as percent_rank
FROM students;

   说明:在这个例子中,每个学生的成绩会根据分数从高到低计算出一个百分比排名。第一名的学生百分比排名是 0,最后一名的百分比排名是 1,其他学生的百分比排名介于两者之间。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/655955.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

山体滑坡在线安全监测预警系统(解决方案)

在近年来,随着全球气候变化的影响,山体滑坡等自然灾害频发,给人们的生命财产安全带来了严重威胁。为了有效预防和减少山体滑坡带来的危害,许多地方开始在山上安装山体滑坡在线安全监测预警系统(解决方案)。…

Java版大厂算法题1——数字颠倒

问题描述 输入一个整数&#xff0c;将这个整数以字符串的形式逆序输出&#xff0c;程序不考虑负数的情况&#xff0c;若数字含有0&#xff0c;则逆序形式也含有0。如果输入为100&#xff0c;则输出为001。 数据范围&#xff1a;0<n<(2^30)-1 * 输入描述&#xff1a;输入…

2024年华为OD机试真题-开源项目热榜-Python-OD统一考试(C卷)

题目描述: 某个开源社区希望将最近热度比较高的开源项目出一个榜单,推荐给社区里面的开发者。对于每个开源项目,开发者可以进行关注(watch)、收藏(star)、fork、提issue、提交合并请求(MR)等。 数据库里面统计了每个开源项目关注、收藏、fork、issue、MR的数量,开源项目的热…

SpringBoot+SqlServer查询接口

SpringBootSqlServer查询接口 文章目录 SpringBootSqlServer查询接口1. pom环境配置2. common工具包3. 实体类接口映射4. Service层Controller层 需求&#xff1a;根据站号查询前一个小时的所有数据&#xff0c;将数据返回格式为Map<String,List<Map<String,String>…

【硬件产品经理】避免硬件产品失败 | 技术维度

目录 简介 技术维度一&#xff1a;低估产品开发 技术维度二&#xff1a;低估规模生产的复杂性 技术维度三&#xff1a;测试不足 技术维度四&#xff1a;产品太复杂 技术维度五&#xff1a;对客户承诺太高 推荐内容 简介 这节内容主要从技术维度来谈谈避免硬件产品失败这…

vue3封装el-pagination分页组件

1、效果如图&#xff1a; 2、分页组件代码&#xff1a; <template><div class"paging"><el-config-provider :locale"zhCn"><el-paginationv-model:current-page"page.currentPage"v-model:page-size"page.pageSize…

基于Prompt Learning的信息抽取

PTR: Prompt Tuning with Rules for Text Classification 清华&#xff1b;liuzhiyuan&#xff1b;通过规则制定subpromptRelation Extraction as Open-book Examination: Retrieval-enhanced Prompt Tuning Relation Extraction as Open-book Examination: Retrieval-enhance…

iPhone 14支持NFC吗?如果支持,那么怎么启用

你准备好通过启用NFC来释放iPhone 14的全部潜力了吗&#xff1f;如果你曾经想知道如何在你的设备上利用NFC&#xff0c;那么你就来对地方了。 在本综合指南中&#xff0c;我们将引导你完成在iPhone 14上激活NFC的步骤&#xff0c;使你能够无缝连接其他设备&#xff0c;进行非接…

github添加 SSH 密钥

1 打开终端 输入 ssh-keygen -t rsa -b 4096 -C "github邮箱地址"如果不需要密码可以一路回车 出现这个页面就是生存成功了 open ~/.ssh // 打开.ssh 找到id_rsa.pub复制出内容新建ssh密钥输入内容,保存即可

网络安全|重大失误!微软被盗测试账号拥有公司Office 365管理员权限

微软网络近期遭黑客入侵&#xff0c;高管电子邮件被监视长达两个月。 一位研究员表示&#xff0c;黑客通过获取一个拥有管理员权限的老旧测试帐号的访问权限来实施入侵&#xff0c;这是微软犯下的重大失误。 微软在1月25日&#xff08;上周四&#xff09;发布第二篇公告&…

Linux:重定向

Linux&#xff1a;重定向 输出重定向追加重定向输出重定向与追加重定向的本质输入重定向 输出重定向 在Linux中&#xff0c;输出重定向是一种将命令的输出发送到不同位置的方法。通常&#xff0c;执行命令时&#xff0c;输出会显示在终端上。然而&#xff0c;使用输出重定向&a…

vue3 + antd 封装动态表单组件(三)

传送带&#xff1a; vue3 antd 封装动态表单组件&#xff08;一&#xff09; vue3 antd 封装动态表单组件&#xff08;二&#xff09; 前置条件&#xff1a; vue版本 v3.3.11 ant-design-vue版本 v4.1.1 我们发现ant-design-vue Input组件和FormItem组件某些属性支持slot插…

数据写入HBase(scala)

package sourceimport org.apache.hadoop.hbase.{HBaseConfiguration, TableName} import org.apache.hadoop.hbase.client.{ConnectionFactory, Put} import org.apache.hadoop.hbase.util.Bytesobject ffff {def main(args: Array[String]): Unit {//hbase连接配置val conf …

SVG 字体 – SVG 轮廓(18)

简介 使用stroke定义了其图形轮廓。 可以单独定义属性,也可以写在style中 例子 <svg width="500" height="200">1. 单独定义属性<circle cx

Tensorflow2.0笔记 - tensor的padding和tile

本笔记记录tensor的填充和tile操作&#xff0c;对应tf.pad和tf.tile import tensorflow as tf import numpy as nptf.__version__#pad做填充 # tf.pad( tensor,paddings, modeCONSTANT,nameNone) #1维tensor填充 tensor tf.random.uniform([5], maxval10, dtypetf.int32) pri…

猫咪不吃东西怎么办?排行榜上适口性好、性价比高的生骨肉冻干推荐

猫咪不吃东西怎么办&#xff1f;遇到这类情况需要主人去观察猫咪的情况&#xff0c;如果猫咪除了不吃猫粮还出现了呕吐、腹泻、体温异常等其他情况就要考虑猫咪是不是生病了。如果排除了疾病原因&#xff0c;猫咪不吃东西怎么办&#xff1f;可能是猫粮的口感不佳&#xff0c;使…

【重磅发布】已开放!模型师入驻、转格式再升级、3D展示框架全新玩法…

1月23日&#xff0c;老子云正式发布全新版本。此次新版本包含多板块功能上线和升级&#xff0c;为用户带来了含模型师入驻、三维格式在线转换升级、模型免费增值权益开放、全新3D展示框架等一系列精彩内容&#xff01; 1月23日&#xff0c;老子云正式发布全新版本。此次新版本…

Matlab plot绘图的 title 语法

x 0:1:10; >> y x.^2 -10*x15; >> plot(x,y) >> title(x_y, interpreter, none) title 里面的 x_y , y不会被当作下标。

STL初识——string的用法

string 一.string的介绍二.string的使用2.1接口&#xff08;构造类型&#xff09;2.2string的遍历和访问第一种遍历方式第二种遍历方式补充&#xff08;反向迭代器&#xff09;rbeign&#xff0c;rend 2.2接口&#xff08;常用函数&#xff09;2.2.1反转字符串&#xff08;reve…

微信小程序如何控制元素的显示和隐藏

目录 方式一:display 方式二:wx:if 有时在微信小程序元素的显示需要通过特定的条件,比如组件的显示,通常需要在主界面有指定操作。可以通过以下两种方式控制元素的显示和隐藏。 方式一:display 在wxml或者wxss中设置display样式可以控制元素显示情况,元素默认显示,可…