- 打卡第2天 -- 3S2A1P : 三道sql,2道算法,1道简
- 打卡第1天 -- 3S2A1P : 三道sql,2道算法,1道简
- 打卡第5天 -- 3S2A1P : 三道sql,2道算法,1道简
- 打卡第6天 -- 3S2A1P : 三道sql,2道算法,1道简
- 打卡第4天 -- 3S2A1P : 三道sql,2道算法,1道简
- 打卡第9天 -- 3S2A1P : 三道sql,2道算法,1道简
- 打卡第3天 -- 3S2A1P : 三道sql,2道算法,1道简
- 打卡第8天 -- 3S2A1P : 三道sql,2道算法,1道简
- 打卡第7天 -- 3S2A1P : 三道sql,2道算法,1道简
- 打卡第10天 -- 3S2A1P : 三道sql,2道算法,1道
打卡第2天 -- 3S2A1P : 三道sql,2道算法,1道简答
sql-1
https://www.nowcoder.com/practice/a32669eb1d1740e785f105fa22741d5c?tpId=82&&tqId=29767&rp=1&ru=/ta/sql&qru=/ta/sql/question-ranking
查找employees表所有emp_no为奇数,且last_name不为Mary(注意大小写)的员工信息,并按照hire_date逆序排列(题目不能使用mod函数)
拆分:
判断为奇数: &1 、 %2==1
不为:!= 、<>
排序: order by desc asc
select * from employees where emp_no & 1 and last_name<>'Mary' order by hire_date desc
sql-2
https://www.nowcoder.com/practice/c8652e9e5a354b879e2a244200f1eaae?tpId=82&&tqId=29768&rp=1&ru=/ta/sql&qru=/ta/sql/question-ranking
统计出当前(titles.to_date='9999-01-01')各个title类型对应的员工当前(salaries.to_date='9999-01-01')薪水对应的平均工资。结果给出title以及平均工资avg
拆分:
分组:group by
平均:avg()
select title,avg(salary) from (salaries s inner join titles t on s.emp_no==t.emp_no and t.to_date=='9999-01-01' and s.to_date='9999-01-01') st group by title
sql-3
https://www.nowcoder.com/practice/8d2c290cc4e24403b98ca82ce45d04db?tpId=82&&tqId=29769&rp=1&ru=/ta/sql&qru=/ta/sql/question-ranking
获取当前(to_date='9999-01-01')薪水第二多的员工的emp_no以及其对应的薪水salary
拆分
第二多:方法1: dense_rank() over()
方法2:去重(分组)排序 ,找到第二个
方法3:先过滤掉最大值,再求最大值
-- 方法1:开窗函数
select emp_no,salary from (select emp_no,salary,dense_rank() over(order by salary desc)as rk from salaries) t where t.rk=2
-- 方法2:使用去重排序找第二个
select emp_no,salary from salaries s where s.salary =(select salary from salaries group by salary order by salary desc limit 1,1)
网友评论