首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
课程
专栏·文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
在线笔面试、雇主品牌宣传
登录
/
注册
ChL912
获赞
24
粉丝
0
关注
3
看过 TA
0
男
上海财经大学
2017
风险管理
IP属地:未知
暂未填写个人简介
私信
关注
拉黑
举报
举报
确定要拉黑ChL912吗?
发布(5)
刷题
ChL912
2021-02-13 13:53
风险管理
不用窗口函数的办法
此题可以不用窗口函数来解,关键在于使用COUNT来为不同排名的salary赋予排名号(用不用DISTINCT看题目要求有两种方法。方法一:构建两个salaries表互相联结,此步目的是得到每个员工工资的排名号,再与外面的salaries表联结,得出题解 SELECT a.emp_no, a.salary, b.r FROM salaries a JOIN (SELECT s1.emp_no, COUNT(DISTINCT s2.salary) r FROM salaries s1, salaries s2 ...
0
点赞
评论
收藏
转发
ChL912
2021-02-05 19:07
风险管理
题解
此题关键思维点在于,将给的两张表转换为,入职工资情况表和当前工资情况表,这样一来涨幅就很容易查询了 SELECT a.emp1_no, (b.nowsalary - a.hiresalary) growth FROM (SELECT e1.emp_no emp1_no, s1.salary hiresalary FROM employees e1, salaries s1 WHERE e1.emp_no = s1.emp_no AND e1.hire_date = s1.from_date) a RIGHT JOIN (SELECT e2.e...
0
点赞
评论
收藏
转发
ChL912
2021-02-05 17:51
风险管理
两个方法
方法一:在联结三个表时,使用两次left join select e.last_name, e.first_name, d.dept_name from employees e left join dept_emp de on e.emp_no = de.emp_no left join departments d on de.dept_no = d.dept_no 方法二:先联结deparments和dept_emp成为一个新表b,再将其与employees表联结(注意:此方法必须要注意列名的命名,否则容易报错) select e.last_name, e...
0
点赞
评论
收藏
转发
ChL912
2021-02-05 14:22
已编辑
风险管理
这个题出的挺好的,看似简单但是有一些弯弯绕绕不好想,下面介绍三个方法
方法一:联结两个表,然后内嵌一个子查询用于查询最高工资,再将子查询与外面的联结用部门联系在一起,即可查找出各部门工资最高情况 SELECT de.dept_no, de.emp_no, s.salary maxSalary FROM dept_emp de JOIN salaries s ON de.emp_no = s.emp_no WHERE s.salary IN (SELECT MAX(s1.salary) FROM dept_emp de1 JOIN salaries s1 ON de1.emp_no = s...
0
点赞
评论
收藏
转发
ChL912
2021-02-05 18:17
已编辑
风险管理
SQL习题2不用LIMIT的方法
在解答里看到有不用LIMIT的用法,我尝试着理解了一波,那位兄弟的思路是对的,但是代码个人认为有一点小问题,所以稍微改进了一下代码如下,欢迎讨论,此方法关键点在于将employees表复制为两张一模一样的表进行比较,从而得出hire_date排名倒数第三的值。注意【hire_date排名倒数第三 = 从晚到早排列hire_date在所有时间中排第三 = 比它晚的入职时间只有两个 = 大于它的入职时间只有两个】下列代码筛选出最晚的三个入职时间,然后再取其中的最小值,即为倒数第三的hire_date SELECT* FROM employees WHERE hire_date = (SELECT ...
0
点赞
评论
收藏
转发
1
工具箱
TA的圈子
暂未加入圈子
TA的圈子
TA的笔记
暂无笔记
TA的笔记
登录
0
天
已登录
0
天
连续登录
0
人
今日访客
牛客网
牛客企业服务