gpt4 book ai didi

sql - 在我的 sql 语句中,我对同一个参数调用 sum 两次,是否重复工作?

转载 作者:行者123 更新时间:2023-12-02 09:28:19 25 4
gpt4 key购买 nike

考虑下面我的 sql 查询;它对同一个参数调用 sum 两次。这是否重复了服务器所做的工作?有更好的方法吗?

SELECT      Status_Detail_Code, count(*) as 
[Number of times assigned], round(sum(Duration)/60,2) as [total duration Hr]

FROM dbo.V_TIMELINE

WHERE (CADATE > N'20080101')

group by Status_Detail_Code order by sum(Duration) desc

最佳答案

不,SQL Server 重用聚合。

事实上,如果您构建查询计划,您将在聚合运算符(例如 Stream Aggregate)的结果集中看到 SUM ,表示为 Expr****.

此表达式的值稍后将用作其他运算符的输入。

这是示例查询:

SELECT  ROUND(SUM(id), -1)
FROM master
GROUP BY
name
ORDER BY
SUM(id) DESC

它的计划:

  |--Compute Scalar(DEFINE:([Expr1004]=round([Expr1003],(-1))))
|--Sort(ORDER BY:([Expr1003] DESC))
|--Stream Aggregate(GROUP BY:([test].[dbo].[master].[name]) DEFINE:([Expr1003]=SUM([test].[dbo].[master].[id])))
|--Index Scan(OBJECT:([test].[dbo].[master].[ix_name_desc]), ORDERED BACKWARD)

如您所见,聚合完成一次并存储在 Expr1003 中。

然后,

Expr1003Sort 运算符(处理 ORDER BY)和计算标量 中重复使用(处理ROUND)

关于sql - 在我的 sql 语句中,我对同一个参数调用 sum 两次,是否重复工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2253764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com