| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> 第一篇博客-Sql排名函数DENSE_RANK -> 正文阅读 |
|
[大数据]第一篇博客-Sql排名函数DENSE_RANK |
Sql排名函数?DENSE_RANK1、DENSE_RANK函数介绍dense_rank函数用于返回结果集的分区内每行的排名,函数考虑到了over子句中排序字段值相同的情况,over子句中排序字段值相同的序号是一样的,后面字段值不相同的生成序号也是连续的。比如1、2、2、3。 相比较而言,另一个排名函数rank()与之类似,但是字段值不相同的序号将跳过相同的排名号排下一个,比如1、2、2、4。 dense_rank函数用法如下:
需要注意的是:
下面通过两个最近刷到的LC数据库习题来进行DENSE_RANK函数的讲解。 2、eg.1-第N高的薪水编写一个 SQL 查询,获取
例如上述
比较直观的一种方法,直接单表查询后使用limit N,1获取答案:
而我们通过题目分析可以知道,第二高的薪水可能不存在,也可能是多个,所以直接利用dense_rank函数排序字段值序号连续的特点,通过Salary降序的方式进行查询:
3、eg.2-部门工资前三高的所有员工
编写一个 SQL 查询,找出每个部门获得前三高工资的所有员工。例如,根据上述给定的表,查询结果应返回:
解释: IT 部门中,Max 获得了最高的工资,Randy 和 Joe 都拿到了第二高的工资,Will 的工资排第三。销售部门(Sales)只有两名员工,Henry 的工资最高,Sam 的工资排第二。 先上我的答案:
一步一步地进行分析:
4、补充介绍-over()函数:over函数的写法: 假设有一张表grade(id, name, score, class)
over()中使用了order by子句,所以默认从第一行累计到当前行!!!;若不使用order by子句,则会针对整个分区求和(此处没指定partition by的话,将整个表视为一个分区,指定partition by就将该分区求和) 与over()函数结合使用的函数: 分析函数over()用于计算基于组的某种聚合值,它和聚合函数的不同之处是:对于每个组返回多行,而聚合函数对于每个组只返回一行。
🎁🎁🎁第一次写博客呀,之前不管刷题还是看技术的东西都是本地记录,还是决定整理出来,有一个再次思考的过程,并且感觉更有动力😬。 我理解的难免有错误,提前感谢批评指正!希望大家一起进步,把学习当作乐趣! |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 14:33:44- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |