You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写SQL查询获取资历最浅员工的薪资信息?

问题与解决方案

表结构与测试数据

首先是创建employee表及插入测试数据的SQL语句:

create table employee(
employ_id int (11),employee_name varchar(30),exp_in_months int(20),monthly_salary float );

insert into employee values ('1','manjesh','30', '11000');
insert into employee values ('2','raj','10', '5000');
insert into employee values ('3','johny','15', '8000');
insert into employee values ('4','joy','12', '7000');
insert into employee values ('11','pooja','10', '46000');
insert into employee values ('20','radha','40', '46000');
insert into employee values ('5','kirthi','10', '6500');

需求说明

需要实现两个目标之一:

  • 找出资历最浅(exp_in_months最小,即10个月)的员工Raj、Pooja、Kirthi的月薪,且按数据输入顺序输出结果
  • 计算公司内所有资历最浅员工的薪资总额

原代码问题

你写的原SQL只查询了表中的最低月薪,既没有关联“资历最浅”的条件,也没有筛选目标员工,完全不符合需求。

解决方案

方案1:获取指定资历最浅员工的月薪(按输入顺序输出)

通过子查询先找到最小的资历值,再筛选符合条件的员工,并用FIELD函数保证输出顺序和数据输入顺序一致:

SELECT employee_name, monthly_salary
FROM employee
WHERE exp_in_months = (SELECT MIN(exp_in_months) FROM employee)
  AND employee_name IN ('Raj', 'Pooja', 'Kirthi')
ORDER BY FIELD(employee_name, 'Raj', 'Pooja', 'Kirthi');

执行后会得到结果:

employee_namemonthly_salary
Raj5000
Pooja46000
Kirthi6500

方案2:计算所有资历最浅员工的薪资总额

同样通过子查询锁定资历最浅的员工群体,再对月薪求和:

SELECT SUM(monthly_salary) AS total_salary_of_least_experienced
FROM employee
WHERE exp_in_months = (SELECT MIN(exp_in_months) FROM employee);

执行后会得到总额:57500(5000+46000+6500)

内容的提问来源于stack exchange,提问作者Raj saxena

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 04:45:41