在一张名为empl故宫失窃oyee的表中,中科大就业有两列数据id和salary,现在要求出第n高的薪水,如果没有第n高的薪水,就返回null。(来源于LeetCode 177. 第N高的薪水)
首先,草圣书法家简单地找到所有不重复的薪水,并且从高到低来排序。
SELECT DISTINCT salaryFROM employeeORDER BY salary DESC
之后可以使用limit,设置第一个返回记录的偏移量为n-1,然后指定返回1条记录。(limit和offt字论文第一作者段之后跟着的只能是正整数,所以不能直接使用N-1)
BEGIN SET n = N-1; RETURN ( SELECT DISTINCT salary FROM employee ORDER BY salary DESC LIMIT n,1 ); END;
之后看了一些题解,不禁感叹大家的思路非常开阔,在这里记录下来一些个人觉得有启发性的想法:
排名第N的薪水,其where条件可以是“有n-1个的salary大于它”;mysql 8.0以上的内置函数可以帮助我们解题。如dmissha谜尚en_rank(),它会对查询结果进行排名并生成序号,数值相同的情况下序号相同,且不管有多少个同样的数值,下一个序号都是上一个+1(即rank值紧接上一次的rank值)。den_rank()函数需要与over()配合使用,over()可以接受order by…作为参数。只要找到生成的序号为N的salary即可。本文地址:https://blog.csdn.net/weixin_42245121/article/details/108579229
本文发布于:2023-04-04 04:37:20,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/be0670b3e83577dca92dd292589e70c3.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:数据库学习笔记.doc
本文 PDF 下载地址:数据库学习笔记.pdf
留言与评论(共有 0 条评论) |