【问题标题】:How do I filter a minimum and maximum salary for each seperate department? [duplicate]如何筛选每个单独部门的最低和最高工资? [复制]
【发布时间】:2014-03-15 11:26:25
【问题描述】:

我正在引用一组表,其中一个部门包含多个员工,每个员工都有一个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;

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

【问题讨论】:

  • 我正在使用 oracle。谢谢指正。

标签: sql oracle conditional-statements


【解决方案1】:

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

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;

【讨论】:

  • 这很好用。是否可以添加一行来将结果限制为某些部门 ID?
  • 非常感谢您的帮助。
【解决方案2】:

一个简单的解决方案是在您选择的部门以及最低和最高工资中使用分组声明。这将为您提供每个部门的最小值和最大值。然后,您可以在最终投影中加入您想要的其他数据点。

示例:

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

【讨论】:

    猜你喜欢
    • 2019-06-23
    • 1970-01-01
    • 2021-08-26
    • 1970-01-01
    • 1970-01-01
    • 2021-04-20
    • 2013-05-23
    • 2016-05-01
    • 2019-01-25
    相关资源
    最近更新 更多