Sql server Order By Then Sum()到x只返回那些

Sql server Order By Then Sum()到x只返回那些,sql-server,tsql,Sql Server,Tsql,对于下面的数据,我想按AverageOfTotal排序,然后取平均值之和最多为x的最上面的ItemNumber ItemNumber AverageOfTotal item-1 0.0235 item-2 0.0149 item-3 0.0203 item-4 0.0101 item-5 0.0084 item-6 0.0096 item-7 0.0092 item-8 0.0062 item-9 0.0069 item-10 0.0084 item-11 0.0132 it

对于下面的数据,我想按AverageOfTotal排序,然后取平均值之和最多为x的最上面的ItemNumber

ItemNumber  AverageOfTotal
item-1  0.0235
item-2  0.0149
item-3  0.0203
item-4  0.0101
item-5  0.0084
item-6  0.0096
item-7  0.0092
item-8  0.0062
item-9  0.0069
item-10 0.0084
item-11 0.0132
item-12 0.0058
item-13 0.0094
item-14 0.0028
item-15 0.0061
item-16 0.0047
item-17 0.0038
item-18 0.0021
item-19 0.004
item-20 0.0083
item-21 0.0048
item-22 0.0058
item-23 0.0153
item-24 0.0025
item-25 0.0022
item-26 0.0086
item-27 0.0076
item-28 0.0097
item-29 0.0009
item-30 0.0042
item-31 0.0099
item-32 0.0036
例如,如果我只想要top.1 ItemNumber,它将返回

第3项第23项第2项第11项第4项第31项

目标:


如何生成上面提到的列?关键是,首先我需要按平均总数和行与行之间的值之和排序,直到一个数字,然后返回这些项目。

您可能会从生成的数字中寻找猜测值作为示例 为了类似于

Select 
    ItemNumber,  
    AverageOfTotal, 
    (
        select sum(AverageOfTotal) 
        from tbl 
        where AverageOfTotal >= yt.AverageOfTotal 
    ) as summedAvgBiggerEqualThisOne 
from tbl yt
where
    (
        select sum(AverageOfTotal) 
        from tbl 
        where AverageOfTotal >= yt.AverageOfTotal 
    ) < 0.1

order by AverageOfTotal desc
结果:

ItemNumber  AverageOfTotal  summedAvgBiggerEqualThisOne
item-1     0.0235           0.0235
item-3     0.0203           0.0438
item-23    0.0153           0.0591
item-2     0.0149           0.074
item-11    0.0132           0.0872
item-4     0.0101           0.0973
这可以做到:

SELECT
    ItemNumber
    , AverageOfTotal
    , SumOfAverageOfTotal
FROM
    (
        SELECT
            ItemNumber
            , AverageOfTotal
            , SUM(AverageOfTotal) OVER (ORDER BY AverageOfTotal DESC) SumOfAverageOfTotal
        FROM YourTable
    ) Q
WHERE SumOfAverageOfTotal < 0.1 -- or <=

这些项目按其总和的平均值降序排列,他要求的总和是所有项目总和的平均值之和,这些项目的平均值较大,可能等于总和和自身的平均值
ItemNumber  AverageOfTotal  summedAvgBiggerEqualThisOne
item-1     0.0235           0.0235
item-3     0.0203           0.0438
item-23    0.0153           0.0591
item-2     0.0149           0.074
item-11    0.0132           0.0872
item-4     0.0101           0.0973
SELECT
    ItemNumber
    , AverageOfTotal
    , SumOfAverageOfTotal
FROM
    (
        SELECT
            ItemNumber
            , AverageOfTotal
            , SUM(AverageOfTotal) OVER (ORDER BY AverageOfTotal DESC) SumOfAverageOfTotal
        FROM YourTable
    ) Q
WHERE SumOfAverageOfTotal < 0.1 -- or <=