oracle sql:如何在select语句中对不同的数据点求和?

oracle sql:如何在select语句中对不同的数据点求和?,sql,oracle,sum,Sql,Oracle,Sum,我试图返回一个总和,它是返回的多行数据的总和。我试图返回显示员工、帐户和部门的数据。我想要这三个数据点的工资总额。我还想要一笔由员工支付的款项,以显示他们的工资分配情况。下面是一个例子。任何帮助都将不胜感激 您可以使用SUM分析函数在窗口子句中使用不同的组来实现这一点 SELECT employee , account , dept , SUM (salary) OVER (PARTITION BY employee) AS employee_salary , SUM (sala

我试图返回一个总和,它是返回的多行数据的总和。我试图返回显示员工、帐户和部门的数据。我想要这三个数据点的工资总额。我还想要一笔由员工支付的款项,以显示他们的工资分配情况。下面是一个例子。任何帮助都将不胜感激


您可以使用
SUM
分析函数在窗口子句中使用不同的组来实现这一点

SELECT employee
  , account
  , dept
  , SUM (salary) OVER (PARTITION BY employee) AS employee_salary
  , SUM (salary) OVER (PARTITION BY dept) AS dept_salary_paid
  , SUM (salary) OVER (PARTITION BY account) AS acct_salary_paid
FROM mytable
我不确定这些分组是否正是你想要的(也许我误解了你的问题),但它应该给你正确的想法。Windowing子句为您提供了更大的灵活性,允许您按不同的值对总和进行分组,而
groupby
强制按
SELECT
进行单个分组

根据您最近的更新进行编辑:

您不需要
GROUPBY
和windowing子句。您可以在(PARTITION BY…)子句上执行两个不同的
,因此它看起来如下所示:

select employee
, activity
, SUM (salary_amt) OVER (PARTITION BY employee, activity) AS "total salary by employee and activity"
, SUM (salary_amt) OVER (PARTITION BY employee) AS "total salary by employee"
from mytable where employee = 'xxx'

这将返回每个员工的工资总额

SELECT employee, SUM(salary)
FROM Table
GROUP BY employee

基于McGothlin已经发布的内容:

SELECT employee
  , account
  , dept
  , salary
  , SUM (salary) OVER (PARTITION BY employee) AS "total salary by employee"
  , ROUND(salary / SUM (salary) OVER (PARTITION BY employee) * 100) || '%' AS "salary distribution"
FROM mytable

fhossfel写的基本上就是我想要它如何工作。 以下是我尝试过的:

选择员工、活动、总额(薪资金额)、总额(薪资金额)超过(按员工划分)作为“按员工划分的薪资总额” 从mytable 其中employee='xxx' 按员工、活动分组


我得到的错误是,sum by employee不是group by expression

请共享您提出的查询。那么,您从偷来的答案中添加了什么值?我添加了百分比计算,因此查询实际上返回了请求的结果。你真的看过附件中的截图了吗?这并不能充分回答这个问题,老实说,我不确定这是否真的有帮助。他们想要多笔钱。这可以通过使用窗口子句(正如@McGlothlin所使用的)或通过连接逻辑来完成……这里将讨论问题的最后两句。他要求员工提供一笔款项,然后表示任何信息都有帮助。请参阅我答案中的编辑。此外,这可能是对您的问题的编辑,而不是答案本身。