【问题标题】:How do obtain a descending list of groups of a column that is the sum of another of that group's column?如何获得一个列的组的降序列表,该列是该组的另一个列的总和?
【发布时间】:2020-09-30 22:43:06
【问题描述】:

我想了解如何根据该组中另一列的总和对一组列值进行降序排序。

来自样本数据:

mtype    location    mcount
===========================
X        TX          4
Z        AL          10
C        TX          15
M        AL          3
Z        TX          12
M        CT          4
M        TX          20
Z        CT          40

首先我想按状态确定 SUM(mcount)。

location    SUM(mcount)
=======================
TX          51
CT          44
AL          13

然后基于该 SUM,我希望先返回 SUM 最高的状态行,然后以此类推。

所以上面的数据会像这样返回(首先是所有 TX 行,然后是 CT,最后是 AL)

mtype    location    mcount
===========================
X        TX          4
C        TX          15
Z        TX          12
M        TX          20
M        CT          4
Z        CT          40
Z        AL          10    
M        AL          3

行的顺序超出其计数的组总和的总和无关紧要。

我已经获得了总 mcount 降序最高的州列表:

SELECT [LOCATION]
FROM A_TABLE
GROUP BY [STATE]
ORDER BY SUM(MCOUNT) DESC

要获得我的最终返回表,应将其放入临时表并遍历 [STATE] 值? 类似的东西

For each [LOCATION] in temptable
    SELECT * FROM temptable tt WHERE tt.LOCATION = [LOCATION]
Next

然后以某种方式合并结果?建议的处理方法是什么? 谢谢

【问题讨论】:

    标签: sql sql-server tsql


    【解决方案1】:

    ORDER BY 中使用带窗口的SUM

    WITH YourTable AS(
        SELECT *
        FROM (VALUES('X','TX',4),
                    ('Z','AL',10),
                    ('C','TX',15),
                    ('M','AL',3),
                    ('Z','TX',12),
                    ('M','CT',4),
                    ('M','TX',20),
                    ('Z','CT',40))V(mtype,location,mcount))
    SELECT *
    FROM YourTable
    ORDER BY SUM(mcount) OVER (PARTITION BY location) DESC,
             mcount;
    

    【讨论】:

    • 完美,谢谢!您将如何从中选择前 2 个不同的位置?在这种情况下,返回属于 TX 和 CT 的 6 行。
    • 这是一个单独的问题,在我看来,@CarlosMendieta,但是,有很多答案证明了这一点。例如Get top 1 row of each group。获得前 2 名的逻辑是相同的。
    猜你喜欢
    • 1970-01-01
    • 2021-06-15
    • 2021-08-07
    • 2017-03-25
    • 2023-01-28
    • 1970-01-01
    • 1970-01-01
    • 2019-09-07
    • 2020-04-06
    相关资源
    最近更新 更多