如何显示员工详细信息以及所有员工的总和(sal)?
How to display employee details along with sum(sal) of all employees?
是否可以使用 SQL 显示员工详细信息,如下所示?
Emp_id, Emp_name, Emp_Sal, Sum(Emp_Sal)
注:这里Sum(Emp_Sal)
是所有员工的总和
您可以通过这种方式获得您的预期结果:
SELECT Emp_id, Emp_name, Emp_Sal, (SELECT SUM(Emp_Sal) FROM Employee) AS TotalSalary
FROM Employee;
或
以一种简单的方式将工资的 SUM 存储到一个变量中并与 SELECT *,
一起使用
SELECT SUM(Emp_Sal) INTO @TotalSalary FROM Employee;
SELECT *, @TotalSalary AS TotalSalary
FROM Employee;
Arulkumar 使用标量子查询提供了正确的解决方案。
下面的解决方案使用了解析函数。注意 windowing 子句:它是空的,因为我们想要一个组(所有员工),所以没有 "partition by",我们想要添加所有行,所以没有 "order by"(通过默认意味着所有行都按 "equal" 排序,我们得到所有行的总和)。
优点是你只需要经过一次基地table。在 "scalar subquery" 方法中, table 被读取了两次。在这个简单的例子中可能无关紧要,但在生产中可能很重要,tables.
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
是否可以使用 SQL 显示员工详细信息,如下所示?
Emp_id, Emp_name, Emp_Sal, Sum(Emp_Sal)
注:这里Sum(Emp_Sal)
是所有员工的总和
您可以通过这种方式获得您的预期结果:
SELECT Emp_id, Emp_name, Emp_Sal, (SELECT SUM(Emp_Sal) FROM Employee) AS TotalSalary
FROM Employee;
或
以一种简单的方式将工资的 SUM 存储到一个变量中并与 SELECT *,
SELECT SUM(Emp_Sal) INTO @TotalSalary FROM Employee;
SELECT *, @TotalSalary AS TotalSalary
FROM Employee;
Arulkumar 使用标量子查询提供了正确的解决方案。
下面的解决方案使用了解析函数。注意 windowing 子句:它是空的,因为我们想要一个组(所有员工),所以没有 "partition by",我们想要添加所有行,所以没有 "order by"(通过默认意味着所有行都按 "equal" 排序,我们得到所有行的总和)。
优点是你只需要经过一次基地table。在 "scalar subquery" 方法中, table 被读取了两次。在这个简单的例子中可能无关紧要,但在生产中可能很重要,tables.
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