SQL查询-同一表的更高级别的求和
我有一个SQL Server数据库中的数据,这个查询为我提供了最上面的表SQL查询-同一表的更高级别的求和,sql,sql-server,sum,Sql,Sql Server,Sum,我有一个SQL Server数据库中的数据,这个查询为我提供了最上面的表 SELECT date, resource_name, transfer_resource_name, SUM(calls) as calls FROM abc 我不知道如何填充total_calls列,如图中底部表格所示。基本上,我需要根据select date、resource\u name和total\u calls列对调用和组进行求和 任何意见都将不胜感激 使用子查询 SELECT O.date,
SELECT date, resource_name, transfer_resource_name, SUM(calls) as calls
FROM abc
我不知道如何填充total_calls
列,如图中底部表格所示。基本上,我需要根据select date、resource\u name和total\u calls列对调用和组进行求和
任何意见都将不胜感激
使用子查询
SELECT
O.date,
O.resource_name,
O.transfer_resource_name,
SUM(O.calls) as calls,
(
SELECT SUM(I.calls)
FROM abc I
WHERE I.resource_name = O.resource_name
) total_calls
FROM abc O
使用子查询
SELECT
O.date,
O.resource_name,
O.transfer_resource_name,
SUM(O.calls) as calls,
(
SELECT SUM(I.calls)
FROM abc I
WHERE I.resource_name = O.resource_name
) total_calls
FROM abc O
您的查询在SQL Server中不起作用,因此我假定实际的查询有一个
分组依据
然后,您可以使用窗口功能执行所需操作:
SELECT date, resource_name, transfer_resource_name, SUM(calls) as calls,
SUM(SUM(calls)) OVER (PARTITION BY resource_name) as total_calls
FROM abc
GROUP BY date, resource_name, transfer_resource_name;
您的查询在SQL Server中不起作用,因此我假定实际的查询有一个
分组依据
然后,您可以使用窗口功能执行所需操作:
SELECT date, resource_name, transfer_resource_name, SUM(calls) as calls,
SUM(SUM(calls)) OVER (PARTITION BY resource_name) as total_calls
FROM abc
GROUP BY date, resource_name, transfer_resource_name;
首先按
Resource\u Name
分组,然后将原始表上的结果合并在一起选择如何?首先按Resource\u Name
分组,然后将原始表上的结果合并在一起选择如何?是的,您是对的。它需要有一个小组。这正是我需要的。谢谢戈登。是的,你说得对。它需要有一个小组。这正是我需要的。谢谢戈登。我也会试试这个,谢谢你的帮助山姆。@Mixer,戈登的答案更好,所以除非你有任何问题,否则就用他的答案。我的答案是通用SQL,但如果你是特定于SQL Server的(你说你是),那么就使用分区方式
。我也会尝试一下,谢谢你的帮助。Sam@Mixer,Gordon的答案更好,所以除非你有任何问题,还是用他的答案吧。我的答案是通用SQL,但如果您是特定于SQL Server的(您说您是),那么请使用partitionby
。