学习目标:
每天2-3到简单sql(刷完即止),每天复习代码随想录上的题目2-3道算法(时间充足可以继续),背诵的八股的问题也在这里记录了
今日碎碎念:
1)转赛道了,跑测开去,这几天没更新是因为在加急学测试的内容,真的是肝吐了要,但是也拿到了几个offer,然后有家杭州的中厂还没发,希望可以oc啦
2)转赛道的原因:卡学局,怎么投都没人要QAQ,别说实力有多强,不是高学历开头打招呼,连被“已读”的机会都没有
3)今天刚过科三,这几天休息都不是很好,就只写一下sql题好了,明天开始正常打卡
力扣刷题
SQL
力扣619:619. 只出现一次的最大数字
解答思路:
1)整体来说比较简单,找出只出现一次的,然后求最大即可
select max(num) as num
from (
select num
from MyNumbers
group by num
having count(*) = 1
)as t
力扣1045:1045. 买下所有产品的客户
解答思路:
1)本题我也是先考虑了左链接,但是发现写出来有几个用例过不了
2)后面读了题目,有重复数据
3)我们先去除重复购买的数据,然后拿剩下的数据和Product表里面的数据条数进行比较即可
#
select Customer.customer_id
from Customer
group by customer_id
having count(distinct product_key)
=
(select count(distinct product_key) from Product)
力扣1731:1731. 每位经理的下属员工数量
解答思路:
1)这块思路上其实不难,但是我有个地方疏漏了,round后面没指定小数位数导致超时
2)这里需要对A.emoloyee_id进行分组,如果没有分组,那么展现出来的结果,如果reports_to为空的情况下,会展现出一行null数据,而要求的应该是不输出
select
A.employee_id,
A.name,
count(A.employee_id) as reports_count,
round(avg(B.age),0) as average_age
FROM Employees as A inner join Employees as B
on A.employee_id = B.reports_to
group by A.employee_id
order by A.employee_id
力扣1978:1978. 上级经理已离职的公司员工
解答思路:
1)这块思路上其实不难
# 查找这些员工的id,他们的薪水严格少于$30000 并且他们的上级经理已离职
select a.employee_id
from(
select employee_id,manager_id,salary
from Employees
where manager_id is not null and salary < 30000
)a
where a.manager_id not in (
select distinct employee_id from Employees
)
order by employee_id
八股
复习之前的计网的八股