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

标签 mysql sql oracle oracle-sqldeveloper informatica-powercenter

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

Emp_id, Emp_name, Emp_Sal, Sum(Emp_Sal)

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

最佳答案

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

下面的解决方案使用了一个解析函数。注意 windowing 子句:它是空的,因为我们想要一个单独的组(所有员工),所以没有“partition by”,我们想添加所有行,所以没有“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

关于mysql - 如何显示员工详细信息以及所有员工的总和(sal)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38396888/

相关文章:

php - 如何测试 Oracle 连接

python - 如何自动处理 Django 模型的创建和更新日期?

php - 使用 mysql_fetch_array 将记录彼此相邻地放入列中?

sql - PostgreSQL 选择不在其他日期之间的日期之间的日期

mysql - 为什么 SQL 查询通过 PHPMySQLAdmin 而不是通过 mysql_query?

sql - 在 where 子句中使用数字表作为过滤器

oracle - 并行运行过程 - Oracle PL/SQL

Mysql - 来自 1 个表的 3 个单独的总和 - 工作 - 搜索更好的查询

php - 调用时调用未定义的函数

MySQL 排序依据不一致