首页 > 其他分享 >leetcode 第176题:第二高的薪水

leetcode 第176题:第二高的薪水

时间:2024-02-04 14:01:20浏览次数:38  
标签:薪水 第二 查询 ifNull 176 null leetcode select

leetcode 数据库

第176题:第二高的薪水

第一种:去掉最大的薪水,选取第二大的薪水

select max(salary) as SecondHighestSalary 
from Employee
where salary < (select max(salary) from Employee);

第二种:嵌套查询+去除null+去重

  • 要想获取第二高,需要排序,使用 order by(默认是升序 asc,即从小到大),若想降序则使用关键字 desc
  • 去重,如果有多个相同的数据,使用关键字 distinct 去重
  • 判断临界输出,如果不存在第二高的薪水,查询应返回 null,使用 ifNull(查询,null)方法
  • 起别名,使用关键字 as ...
  • 因为去了重,又按顺序排序,使用 limit()方法,查询第二大的数据,即第二高的薪水,即 limit(1,1) (因为默认从0开始,所以第一个1是查询第二大的数,第二个1是表示往后显示多少条数据,这里只需要一条)
  • 为什么最外层没有加上 from employee?如果没有 ifNull() 函数,单纯只是嵌套SQL,加上 from employee 没有问题;但问题是 select ifNull 是搭配使用的,并不属于嵌套查询
select ifNull((
select distinct Salary
from Employee
order by Salary desc limit 1,1),null) as SecondHighestSalary

标签:薪水,第二,查询,ifNull,176,null,leetcode,select
From: https://www.cnblogs.com/ldy20020324/p/18006065

相关文章

  • CF1765C
    请看一副扑克牌。每张牌有\(4\)种花色,每种花色正好有\(n\)张牌--因此,这副牌的总数是\(4n\)。这副扑克牌是随机洗牌的,因此扑克牌中\((4n)!\)种可能的牌序都有相同的概率成为洗牌的结果。假设\(c_i\)是一副牌中\(i\)的第3张牌(从上到下)。Monocarp开始从一副牌中一张......
  • Leetcode刷题第八天-回溯
    22:括号生成链接:22.括号生成-力扣(LeetCode)括号是一对,所以每一次递归结束条件是字符串长度=2*n有效括号判断:'('个数==')'个数时,当前必须是'(','('个数==n时,必须是')',其他情况当前位置遍历两边,既可以是'('又可以是')'1classSolution:2defgenerateParenth......
  • [LeetCode] 2966. Divide Array Into Arrays With Max Difference
    Youaregivenanintegerarraynumsofsizenandapositiveintegerk.Dividethearrayintooneormorearraysofsize3satisfyingthefollowingconditions:Eachelementofnumsshouldbeinexactlyonearray.Thedifferencebetweenanytwoelementsin......
  • leetcode85. 最大矩形
    85.最大矩形-力扣(LeetCode)参考dp求最大字串和的思想,将一维dp转化为二维的形式,将当前列的和当成一维的数进行dp即可。这题和求最大子矩阵和的dp思路一样。1classSolution{2public:3intmaximalRectangle(vector<vector<char>>&matrix){4intn=m......
  • Leetcode刷题第六天-回溯
    131:分割回文串链接:131.分割回文串-力扣(LeetCode)for遍历字符串递归切割,切割到字符串尾,单次结束1classSolution:2defpartition(self,s:str)->List[List[str]]:3if(nots):return[]4re=[]5self.backtracking(s,[],re,......
  • PLSQL重命名表的方法和报错解决方法ORA-01765 ORA-14047
    重命名办法在PLSQL中重命名表,在表上点右健选重命名。 报错ORA-01765若不是本用户,会报错:ORA-01765:不允许指定表的所有者名称。 解决方法,使用RENAME命令在PLSQL执行不会报错。示例:ALTERTABLEuser1.log_tablenameRENAMETOlog_tablename_back20240131; 报错ORA-14047......
  • datawhale-leetcode打卡:038~050题
    两数相加(leetcode002)#Definitionforsingly-linkedlist.#classListNode:#def__init__(self,val=0,next=None):#self.val=val#self.next=nextclassSolution:defaddTwoNumbers(self,l1:Optional[ListNode],l2:Optional[List......
  • leetcode 42 单调栈解法
    Problem:42.接雨水目录思路解题方法复杂度Code思路作为自己独立完成的第一道困难题,我觉得有必要纪念一下。就是单调栈的思路,不过需要减去栈中的每一项才是雨水的体积。最后一个因为不是柱子,所以在结束循环时可能会出现栈未空的情况,需要倒着再考虑一遍。解题方法遇到比当......
  • LeetCode 2808 使循环数组所有元素相等的最少秒数
    题目描述原题链接:2808.使循环数组所有元素相等的最少秒数解题思路每次变化可以选择变成前一个元素或后一个元素,包括[0]和[n-1]的转化;换个角度思考,每秒最多可以有两个不同元素nums[i-1]和nums[i+1]变化成nums[i]元素;假设nums[i]元素只出现一次,想要将所有元素同化那么......
  • Leetcode刷题第五天-二分法-回溯
    215:第k个最大元素链接:215.数组中的第K个最大元素-力扣(LeetCode)em~~怎么说呢,快速选择,随机定一个目标值,开始找,左边比目标小,右边比目标大,左右同时不满足时,交换左右位置,直到左指针比右指针大,交换目标和右指针位置的值,此时右指针位置即时目标值的在排序好数组中的位置,如果k在右......