如何显示员工详细信息以及所有员工的总和(sal)?

时间:2016-07-15 13:05:12

标签: mysql sql oracle oracle-sqldeveloper informatica-powercenter

是否可以使用SQL显示员工详细信息,如下所示?

Emp_id, Emp_name, Emp_Sal, Sum(Emp_Sal)

注意:此处Sum(Emp_Sal)是所有员工的总和。

2 个答案:

答案 0 :(得分:4)

Arulkumar使用标量子查询提供了正确的解决方案。

以下解决方案使用分析功能。注意窗口子句:它是空的,因为我们想要一个组(所有员工),所以没有“分区依据”,我们想要添加所有行,所以没有“order by”(默认情况下是这样)所有行都按“相等”排序,我们得到所有行的总和。

优点是您只需通过一次基表。在“标量子查询”方法中,表被读取两次。在这个简单的例子中,它可能并不重要,但它在生产中可能很重要,有很大的表格。

    select empno, msal, sum(msal) over () as total_sal from employees;



     EMPNO       MSAL  TOTAL_SAL
---------- ---------- ----------
      7369        800      28875
      7499       1600      28875
      7521       1250      28875
      7566       2975      28875
      7654       1250      28875
      7698       2850      28875
      7782       2450      28875
      7788       3000      28875
      7839       5000      28875
      7844       1500      28875
      7876       1100      28875
      7900        800      28875
      7902       3000      28875
      7934       1300      28875

答案 1 :(得分:2)

您可以通过以下方式获得预期结果:

SELECT Emp_id, Emp_name, Emp_Sal, (SELECT SUM(Emp_Sal) FROM Employee) AS TotalSalary
FROM Employee;

Working DEMO

以简单的方式将薪水的SUM存储到变量中并与SELECT *,一起使用

SELECT SUM(Emp_Sal) INTO @TotalSalary FROM Employee;

SELECT *, @TotalSalary AS TotalSalary
FROM Employee;

Working DEMO