Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
leetcode刷题177第n高的薪水
前文
本文为leetcode数据库类型题目,题目序号为177,主要考察对于数据库查询语句的应用,题目链接为https://leetcode-cn.com/problems/nth-highest-salary/。
题目信息
表: Employee
+-------------+------+ | Column Name | Type | +-------------+------+ | id | int | | salary | int | +-------------+------+ Id是该表的主键列。 该表的每一行都包含有关员工工资的信息。
编写一个SQL查询来报告 Employee 表中第 n 高的工资。如果没有第 n 个最高工资,查询应该报告为 null 。
解题思路
根据题目信息,本题目要求对于数据库表中给出的若干员工薪水进行数据查询,获取其中第n高的薪水。根据给定的已知sql我们得出,只需要进行存储过程内部的代码编写即可。首先考虑如何获得第n高的薪水值,我们需要对于所有的员工薪水进行排序。由于只是薪水值本身,因此还需要通过distinct关键字进行数据去重。至于第n高怎么实现,则是采用常用的limit关键字组合偏移量的方式。给定的存储过程中代码已经处理好我们需要的n,因此只需要通过limit n,1即可得到目标的结果。而与此同时,由于需要考虑数据不存在的情况,因此使用ifnull函数对于查询的结果进行处理。如果不存在结果则直接返回null,反之返回结果即可完成题目解答。
解题答案
CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT BEGIN SET N=N-1; RETURN ( # Write your MySQL query statement below. select ifnull((select distinct(Salary) as getNthHighestSalary from Employee order by salary desc limit N,1),null) as getNthHighestSalary ); END
后记
- 千古兴亡多少事?悠悠。不尽长江滚滚流。