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所使用的)或通过连接逻辑来完成……这里将讨论问题的最后两句。他要求员工提供一笔款项,然后表示任何信息都有帮助。请参阅我答案中的编辑。此外,这可能是对您的问题的编辑,而不是答案本身。