48 - 第二高的薪水
题目
编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) 。
+----+--------+ | Id | Salary | +----+--------+ | 1 | 100 | | 2 | 200 | | 3 | 300 | +----+--------+
例如上述 Employee 表,SQL查询应该返回 200 作为第二高的薪水。如果不存在第二高的薪水,那么查询应返回 null。
+---------------------+ | SecondHighestSalary | +---------------------+ | 200 | +---------------------+
解答
mycli里面,摁f3可以换行。f4进入vim模式,比如摁o来新建下一行
创建表时不能同时往里面塞数据,似乎只能一行行insert。
而且insert必须加括号
Runtime: 140 ms, faster than 62.65% of MySQL online submissions forSecond Highest Salary.
Memory Usage: N/A
distinct
,说明选择的是不同的内容。比如两个人的salary是一样的,那么只会显示一条工资。order by … desc
,说明是降序排列limit 1, 1
,相当于limit 1 offset 1
。limit
是一条一分页,offset
是偏移量,也就是打印第2页(第一页是0,因为离第一页的偏移为0)不过这第一个参数是
offset
,第二个参数是limit
。也就是第一个1是偏移量,第二个1是展示数量。而且分开写还不能把offset
放在前面。。。似乎还是写开了,比较容易理解。
as
,是别名,选出来的数据,列名叫什么。as
可以不写,不过还是觉得写着跟容易理解
整个命令的做法是,先把括号里面的东西选出来,选出来的是一个临时表 。然后再选中这个临时表,选出来的再命别名。
Runtime: 153 ms, faster than 43.52% of MySQL online submissions forSecond Highest Salary.
Memory Usage: N/A
Runtime: 191 ms, faster than 5.54% of MySQL online submissions forSecond Highest Salary.
Memory Usage: N/A
这里多做了一步挑选max
的操作,所以很费时间
Last updated
Was this helpful?