其实做之前就打算分享的,但是做完又不想分享了。。。结果没几分钟,还是,写一下吧。我就当各位是监督我的。
说一下,这是第一天做SQL题,虽然我也是软件工程专业,但是学的本来就不好,又忘了个差不多。SQL目前是只会and 和 join链接 。为了找实习,下决心刷题,一道道刷,easy和mid都做。
还有就是每天不超过4道吧,毕竟在精不在多。
176和177
第二,第N高的薪水。思路差不多。177多了一个函数,FUNCTION。这一题还学到了IFNULL这个语法
sql
CREATE FUNCTION getNthHighestSalary(N INT)
RETURNS INT
DETERMINISTIC
READS SQL DATA
BEGIN
# Write your MySQL query statement below.
declare M int;
set M = N-1;
return IFNULL((
select distinct salary
from employee
order by Salary desc
limit M, 1
), null);
END;
select getNthHighestSalary(1);
178
分数排名,这个题解有说一个MySQL8.0不支持的函数,DENSE_RANK,非常巧合能用到这个题。不太通用就
sql
select s1.score,(
select count(distinct s2.score) from Scores s2
where s2.score >= s1.score
)as 'rank'
from Scores as s1
order by s1.score desc;
179
找出所有至少连续出现三次的数字。我一开始也没想到,居然能自连接三次,然后用id判断。感觉有点算法题的思路了,for遍历一样
sql
select distinct l1.num as ConsecutiveNums
from Logs l1, Logs l2, Logs l3
where l1.id = l2.id-1 and l2.id = l3.id -1 and l1.num = l2.num and l2.num = l3.num