题解 | #获取员工其当前薪水比其经理当前薪水高的相关信息#

获取员工其当前的薪水比其manager当前薪水还高的相关信息

https://www.nowcoder.com/practice/f858d74a030e48da8e0f69e21be63bef

以下为ai对我最下方代码检验:
重复列名:d.emp_no 和 dm.emp_no 都被选中,但它们都是 emp_no。这可能会导致结果集中的列名冲突。通常,如果两个表有相同的列名,并且你在查询中都选择了它们,你需要为其中一个或两个列名指定别名,以避免混淆。
左连接条件:你使用了 left join salaries s1 on dm.emp_no=s1.emp_no。这意味着,即使 dept_manager 表中的某个经理没有对应的薪资记录(在 salaries 表中),该经理仍然会出现在结果集中,但其 manager_salary 列将为NULL。这是否是你想要的行为?
比较NULL值:在 and s.salary > s1.salary 这个条件中,如果 s1.salary 是NULL,那么这个比较将不会按照你预期的方式工作。在SQL中,NULL与任何值的比较都会返回NULL,而不是TRUE或FALSE。因此,这个条件可能会排除那些 s1.salary 为NULL的记录,即使 s.salary 的值很大。
逻辑条件:where d.emp_no != dm.emp_no 这个条件确保员工和其经理不是同一个人。这是否总是你想要的?在某些情况下,一个人可能既是员工又是自己的经理(尽管这听起来很奇怪)。
日期条件:s.to_date='9999-01-01' 和 dm.to_date='9999-01-01' 这两个条件假设 '9999-01-01' 是一个表示“无结束日期”的特殊值。这是否是数据库中的实际表示方式?如果不是,这些条件可能不会按预期工作。
性能:这个查询涉及多个表的连接,可能会影响性能,特别是如果表很大且没有适当的索引时。
综上所述,这个查询是否有问题取决于你的具体需求和数据库的实际结构。你可能需要根据实际情况调整查询。



select d.emp_no,dm.emp_no,s.salary emp_salary,s1.salary manager_salary
from dept_emp d join dept_manager dm on d.dept_no=dm.dept_no
 join salaries s on d.emp_no=s.emp_no
 left join salaries s1 on dm.emp_no=s1.emp_no
 where d.emp_no != dm.emp_no and s.to_date='9999-01-01' and dm.to_date='9999-01-01'
and s.salary > s1.salary
 

全部评论

相关推荐

不愿透露姓名的神秘牛友
06-27 14:11
很喜欢小米的新车,校招薪资每月22k,攒多久能买?
测试糕手手:别看工资,先看现金流存款。有50W存款以上再考虑,车是消耗品,选适合自己的重要。你有钱就当我没说过
点赞 评论 收藏
分享
湫湫湫不会java:写的很杂,连自己都不知道找什么工作的感觉,只是要份工作。针对自己稍微有点优势的方向好好整份简历投投吧,然后这杂的简历就辅助投投,因为自己认为的优势可能也不是很大的优势all in可能失业,自己也没有啥很想的方向还是可以用这通用的碰碰运气吧,加油
点赞 评论 收藏
分享
能干的三文鱼刷了10...:公司可能有弄嵌入式需要会画pcb的需求,而且pcb能快速直观看出一个人某方面的实力。看看是否有面试资格。问你问题也能ai出来,pcb这东西能作假概率不高
点赞 评论 收藏
分享
鼠鼠第一次实习,啥也不懂一直是自己一个人吃的饭,不会做工作老是被嫌弃,大人的世界是这样的吗?
我是星星我会发亮:好的mt有两种,一种愿意教你的,一种几乎什么活都不给你派让你很闲允许你做自己事情的
实习吐槽大会
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务