Visual studio 2012 获取指定行集之间的平均值
各位,我正在使用Visual Studio 2012构建报告 我希望能够对一组特定行之间的值进行平均 到目前为止,我得到的是这样的东西Visual studio 2012 获取指定行集之间的平均值,visual-studio-2012,reporting-services,ssrs-2008-r2,Visual Studio 2012,Reporting Services,Ssrs 2008 R2,各位,我正在使用Visual Studio 2012构建报告 我希望能够对一组特定行之间的值进行平均 到目前为止,我得到的是这样的东西 =(Count(Fields!SomeField.Value))*.1 及 我想使用这两个值来获得字段的平均值!SomeField.Value介于这些值和行数之间。基本上,我删除了顶部和底部10%的数据,并将中间的80%进行平均。也许有更好的办法?谢谢你的帮助 在SQL本身中处理它。 方法1: 使用NTILE功能。通过此操作了解有关NTILE的更多信息 试试这
=(Count(Fields!SomeField.Value))*.1
及
我想使用这两个值来获得字段的平均值!SomeField.Value
介于这些值和行数之间。基本上,我删除了顶部和底部10%的数据,并将中间的80%进行平均。也许有更好的办法?谢谢你的帮助 在SQL本身中处理它。
方法1:
使用NTILE
功能。通过此操作了解有关NTILE
的更多信息
试试这样的
WITH someCTE AS (
SELECT SomeField, NTILE(10) OVER (ORDER BY SomeField) as percentile
FROM someTable)
SELECT AVG(SomeField) as myAverage
FROM someCTE WHERE percentile BETWEEN 2 and 9
如果你的数据集更大
WITH someCTE AS (
SELECT SomeField, NTILE(100) OVER (ORDER BY SomeField) as percentile
FROM someTable)
SELECT AVG(SomeField) as myAverage
FROM someCTE WHERE percentile BETWEEN 20 and 90
方法2:
SELECT Avg(SomeField) myAvg
From someTable
Where SomeField NOT IN
(
SELECT Top 10 percent someField From someTable order by someField ASC
UNION ALL
SELECT Top 10 percent someField From someTable order by someField DESC
)
注意:
测试边界条件以确保你得到了你需要的。如果需要,调整上面的sql代码
对于NTILE:确保NTILE参数小于(或等于)表中的行数
SELECT Avg(SomeField) myAvg
From someTable
Where SomeField NOT IN
(
SELECT Top 10 percent someField From someTable order by someField ASC
UNION ALL
SELECT Top 10 percent someField From someTable order by someField DESC
)