查询其它工种中比 it_prog 工种中任一工资低的员工的员工编号、名字、工种和月薪
时间: 2024-05-11 15:18:40 浏览: 128
以下是查询结果:
```sql
SELECT e.empno, e.ename, e.job, e.sal
FROM emp e
WHERE e.sal <
(SELECT MAX(e2.sal)
FROM emp e2
WHERE e2.job = 'IT_PROG')
AND e.job <> 'IT_PROG';
```
解释:首先在子查询中获取 IT_PROG 工种中工资最高的员工的工资,然后在主查询中筛选出工资低于该工资的非 IT_PROG 工种的员工信息。
相关问题
-- 四、查询某字段的值是否属于指定的列表之内 in/not in #案例1:查询部门编号是30/50/90的员工名、部门编号 #案例2:查询工种编号不是SH_CLERK或IT_PROG的员工信息
案例1:
查询部门编号是30/50/90的员工名、部门编号
```sql
SELECT ename, deptno FROM emp WHERE deptno IN(30,50,90);
```
结果示例:
| ename | deptno |
| ------ | ------ |
| ALLEN | 30 |
| WARD | 30 |
| MARTIN | 30 |
| BLAKE | 30 |
| CLARK | 10 |
| JONES | 20 |
| SCOTT | 20 |
| KING | 10 |
| TURNER | 30 |
| ADAMS | 20 |
| JAMES | 30 |
| FORD | 20 |
| MILLER | 10 |
案例2:
查询工种编号不是SH_CLERK或IT_PROG的员工信息
```sql
SELECT * FROM emp WHERE job NOT IN ('SH_CLERK','IT_PROG');
```
结果示例:
| empno | ename | job | mgr | hiredate | sal | comm | deptno |
| ----- | ------- | ----------| ---- | ----------| ----- | ---- | ------ |
| 7369 | SMITH | CLERK | 7902 | 1980-12-17| 800.0 | NULL | 20 |
| 7499 | ALLEN | SALESMAN | 7698 | 1981-02-20| 1600.0| 300.0| 30 |
| 7521 | WARD | SALESMAN | 7698 | 1981-02-22| 1250.0| 500.0| 30 |
| 7566 | JONES | MANAGER | 7839 | 1981-04-02| 2975.0| NULL | 20 |
| 7654 | MARTIN | SALESMAN | 7698 | 1981-09-28| 1250.0| 1400.| 30 |
| 7698 | BLAKE | MANAGER | 7839 | 1981-05-01| 2850.0| NULL | 30 |
| 7782 | CLARK | MANAGER | 7839 | 1981-06-09| 2450.0| NULL | 10 |
| 7788 | SCOTT | ANALYST | 7566 | 1982-12-09| 3000.0| NULL | 20 |
| 7839 | KING | PRESIDENT | NULL | 1981-11-17| 5000.0| NULL | 10 |
| 7844 | TURNER | SALESMAN | 7698 | 1981-09-08| 1500.0| 0.0 | 30 |
| 7876 | ADAMS | CLERK | 7788 | 1983-01-12| 1100.0| NULL | 20 |
| 7900 | JAMES | CLERK | 7698 | 1981-12-03| 950.0 | NULL | 30 |
| 7902 | FORD | ANALYST | 7566 | 1981-12-03| 3000.0| NULL | 20 |
| 7934 | MILLER | CLERK | 7782 | 1982-01-23| 1300.0| NULL | 10 |
mysql问题:返回其它job_id中比job_id为‘IT_PROG’部门所有工资都低的员工的员工号、姓名、job_id以及 salary
可以使用以下 SQL 语句来解决这个问题:
```
SELECT e.employee_id, e.first_name, e.last_name, e.job_id, e.salary
FROM employees e
WHERE e.job_id <> 'IT_PROG' AND e.salary < ALL (
SELECT salary FROM employees WHERE job_id = 'IT_PROG'
);
```
以上 SQL 语句中,首先使用了一个子查询来获取部门为 'IT_PROG' 的员工的最高工资,然后在外部查询中筛选出其它部门的工资低于该最高工资的员工,并返回这些员工的员工号、姓名、job_id 以及 salary。
阅读全文