SELECT job_id ,Maxsalary,Minsalary FROM employees WHERE commission_pct IS NOT NULL GROUP BY job_id HAVING MAX(salary) MIN(salary)
时间: 2023-11-28 12:47:06 浏览: 85
这是一条 SQL 查询语句,用于从 employees 表中获取不为空的 commission_pct 列的所有职位的最高薪资和最低薪资。
但是,该查询语句存在语法错误。正确的语句应该是:
```
SELECT job_id, MAX(salary) AS Maxsalary, MIN(salary) AS Minsalary
FROM employees
WHERE commission_pct IS NOT NULL
GROUP BY job_id
HAVING MAX(salary) IS NOT NULL AND MIN(salary) IS NOT NULL;
```
这样才能正确地按照职位分组,并计算每个组内的最高薪资和最低薪资。同时,HAVING 子句中的条件将确保只返回有薪资信息的职位。
相关问题
select * from tb_emp where salary<(select avg(salary) from tb_emp group by dept_id) group by dept_id;为什么错了
这个查询语句是不正确的,因为在子查询中使用了group by语句,这意味着子查询将返回每个部门的平均工资,但是在外部查询中又使用了group by语句,这会导致只返回每个部门的第一行数据,并不是我们想要的结果。正确的查询语句应该是:
SELECT * FROM tb_emp WHERE salary < (SELECT AVG(salary) FROM tb_emp AS t2 WHERE t2.dept_id = tb_emp.dept_id)
选择工资大于所有JOB_ID = 'SA_MAN'的员工的工资的员工的last_name, job_id, salary
以下是查询语句:
```
SELECT last_name, job_id, salary
FROM employees
WHERE salary > (SELECT MAX(salary) FROM employees WHERE job_id = 'SA_MAN')
```
这个查询语句中,外层的 SELECT 语句选择了员工的 last_name、job_id 和 salary,其中 salary 大于 JOB_ID 为 SA_MAN 的员工中最高工资的员工的工资。内层的 SELECT 语句选择了 JOB_ID 为 SA_MAN 的员工中工资最高的员工的工资。
阅读全文