如何过滤每个单独部门的最低和最高工资?

时间:2014-02-16 05:00:33

标签: sql oracle conditional-statements

我引用了一组表,其中一个部门包含多个员工,每个员工都有一个salary

department_idemployee_idsalary都是EMPLOYEES表的一部分。我想确定每个部门的最低和最高工资。

我的查询如下:

SELECT employee_id, first_name||' '||last_name AS full_name, SALARY
       DECODE(department_id, 50, (min(salary)||' '||max(salary)),
                             60, (min(salary)||' '||max(salary)),
                             80, (min(salary)||' '||max(salary)),
                             90, (min(salary)||' '||max(salary)),
              employee_id)
       SALARY_RANGE
FROM   EMPLOYEES;

关于如何完成此查询的想法?感谢

2 个答案:

答案 0 :(得分:3)

如果您想要每个部门的最低和最高工资,为什么不这样做:

select department_id, min(salary)||' '||max(salary) as Salary_Range
from Employees
group by department_id;

您可以使用where

将此限制为特定部门
select department_id, min(salary)||' '||max(salary) as Salary_Range
from Employees
where department_id in (50, 60, 80, 90)
group by department_id;

答案 1 :(得分:0)

一个简单的解决方案是在Department上使用group by语句,并在您的选择中使用min和max salary。这将为您提供每个部门的最小和最大。然后,您可以在最终投影中加入您想要的其他数据点。

示例:

SELECT min(salary), max(salary)
FROM Salary
GROUP BY Department