我有下表
Col1 Col2 Col3 Col4 Col5
TotalAvg 68.79 65.39 88.21 63.14
我已经保存了TotalAvg行中所有列的总数,但是现在我想计算TotalAvg行的平均值。有人可以告诉我如何计算行平均值。
我正在寻找
Select Avg(Col2,Col3,Col4,Col5)
where Col1 = 'TotalAvg'
谢谢
答案 0 :(得分:0)
如果偶然需要一种更动态的方法(即变量列),并且如果您愿意接受TVF,请考虑以下因素:
编辑
第一个参数是要排除的分隔列列表。例如:'IDNr,Year,AnyOtherNumericCol'
。
示例
Select A.*
,B.*
From YourTable A
Cross Apply [dbo].[tvf-Stat-Row-Agg]('',(Select A.* for XML Raw)) B
返回
Col1 Col2 Col3 Col4 Col5 RetCnt RetSum RetMin RetMax RetAvg RetStd
TotalAvg 68.79 65.39 88.21 63.14 4 285.53 63.14 88.21 71.3825 11.4562162892757
感兴趣的TVF
CREATE FUNCTION [dbo].[tvf-Stat-Row-Agg](@Exclude varchar(500),@XML xml)
Returns Table
As
Return (
Select RetCnt = Count(Value)
,RetSum = Sum(Value)
,RetMin = Min(Value)
,RetMax = Max(Value)
,RetAvg = Avg(Value)
,RetStd = Stdev(Value)
From (
Select Item = convert(varchar(100),xAttr.query('local-name(.)'))
,Value = try_convert(float,xAttr.value('.','varchar(max)'))
From @XML.nodes('//@*') x(xAttr)
) S
Where charindex(','+S.Item+',',','+@Exclude+',')=0
);
编辑2
如果列固定,并且性能至关重要,那么...
Select A.*
,B.*
From YourTable A
Cross Apply (
Select AvgVal = avg(Value)
From (values (Col2)
,(Col3)
,(Col4)
,(Col5)
) B1(Value)
) B
答案 1 :(得分:0)
如果其中一些可能具有NULL值,则您仍可以在<div class="dropdown">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Dropdown button
</button>
<div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
<a class="dropdown-item" href="#">Action</a>
<a class="dropdown-item" href="#">Another action</a>
<a class="dropdown-item" href="#">Something else here</a>
</div>
</div>
内使用AVG()
。
APPLY