我正在尝试(sql server)向那些薪资低于其职业平均薪资的员工显示。
我正在尝试下一个查询,但它看起来: Subquery返回了一个以上的值。当子查询跟随=、!=、<、<=、>、>=或子查询用作表达式时,这是不允许的。
SELECT*
FROM EMPLOYEE
WHERE SALARY< (SELECT AVG(SALARY)
FROM EMPLOYEE
GROUP BY PROFESSION
)
有人能帮我吗?
谢谢
我有两个数据表,雇员和部门。我想显示每个部门的雇员人数,每个部门的平均工资等等。我的代码是:
select d.department_id, d.department_name, count(e.last_name) Employees,
avg(e.salary) Avg_Salary, e.last_name, e.salary, e.job_id
from departments d, employees e
where d.department_id = e.department_id
group by d.department_id, d.department_name, e.las
我需要选择薪资高于按部门分组的平均薪资的员工。
SELECT * FROM employees
WHERE salary > (SELECT AVG(salary), department_id FROM employees GROUP BY department_id)
它失败了,因为它返回给我2列。
我尝试过这样的查询:
SELECT * FROM employees
HAVING salary > AVG(salary)
GROUP BY (department_id)
现在我收到了错误消息:ORA-00979:不是表达式组
我查了一下,在这里的论坛上找到了一些链接,但没有一个我觉得适用于我的问题,或似乎有相同的结果与我的。我要做的是.
从more_employees表中列出所有员工的姓氏、姓名、薪资和“比较列”,如果薪资高于平均薪资,则该列输出“高薪资”输出“低薪”
我想出来的是.
SELECT first_name, last_name, salary,
CASE WHEN salary > AVG(salary) THEN 'High-Pay'
WHEN salary < AVG(salary) THEN 'Low-Pay'
我正在尝试打印所有薪资总和大于各部门平均总和的部门名称。
SELECT d.department_name, SUM(e.salary)
FROM departments d, employees e
WHERE d.department_id = e.department_id
GROUP BY d.department_name
HAVING SUM(e.salary) > (SELECT AVG(SUM(salary)) from employees);
在第二个select中,我必须按AVG(SUM(salary))分组什么内容之后
请考虑以下查询:
查找所有部门的总薪资高于所有部门总薪资的平均值的部门。
with dept_total (dept_name, value) as
(
select dept_name, sum(salary)
from instructor
group by dept_name
),
dept_total_avg(value) as
(
select avg(value)
from dept_total
)
select dept_name
from dept_total, dept_total_avg
where dept_total.value
我试图根据员工的薪资(薪等是薪资级别)更新“员工”表中的“”字段。
我需要参考的详细信息存在于不同的表中。
我试着用下面的内容来更新它,但这是行不通的:
UPDATE e
SET e.GradeID = g.gID
FROM Employee e
INNER JOIN Grade g
ON e.GradeID=g.gID
WHERE e.salary BETWEEN coalesce(g.minSalary, 0) AND coalesce(g.maxSalary, 9999999999)
我得到了以下响应,但没有更改任何字段:
(9 rows affected)
Completio