【问题标题】:How to create a oracle view of the max sum of a sum of values of a column based on the values of another如何根据另一列的值创建列的值总和的最大总和的oracle视图
【发布时间】:2016-02-12 19:38:01
【问题描述】:

我需要在Oracle 11g 中创建一个视图来获取这些表:

员工

 FirstName | LastName | EmployeeID
-----------------------------------
    joe    |   shmo   |     1
    bob    |   moll   |     2

销售数据

 Employee ID | commission on sale
----------------------------------
     1       |   $20
     1       |   $30
     2       |   $50
     2       |   $60

然后将每个员工赚取的总佣金相加,返回赚取佣金最多的员工。

因此使用示例数据,视图将包含employee id :: 2bob moll

【问题讨论】:

  • 那么,这是用于什么数据库平台的?
  • 为什么需要一个视图?

标签: sql oracle view sum


【解决方案1】:

这应该可以满足您的需求

创建一些视图名称作为视图

Select EmployeeID, sum (commision) 
from employees
left outer join salesData on salesData.EmployeeID = employees.EmployeeID
Group by EmployeeID, commision
order by commission desc

【讨论】:

    【解决方案2】:
    SELECT employeeID
    FROM
      (SELECT employeeID,
        SUM(commission)
      FROM sales
      GROUP BY employeeID
      ORDER BY SUM(commission)
      )
    WHERE rownum = 1
    

    不知道您为什么要查看该视图,但希望您能弄明白。

    【讨论】:

      【解决方案3】:

      在 Oracle 12g+ 中,您可以使用fetch

      select employeeid
      from sales
      group by employeeid
      order by sum(commission) desc
      fetch first 1 row only;
      

      在早期版本中,一种方法是使用rownum

      select s.*
      from (select employeeid
            from sales
            group by employeeid
            order by sum(commission) desc
           ) s
      where rownum = 1;
      

      【讨论】:

      • 看起来不错,但你可以编辑它以使用我刚刚添加的第二个表吗?我也在使用 oracle 11g
      • @NedCharles 。 . . join 是不必要的,除非您在 sales 中有无效的员工 ID。
      猜你喜欢
      • 1970-01-01
      • 2020-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多