【问题标题】:Query with groupby sum使用 groupby sum 查询
【发布时间】:2021-01-01 06:34:20
【问题描述】:

我需要一个来自 group by 列的 sum 的查询

我有这样的查询

select a.type, a.description, a.value  
 from A  
 group by a.type, a.description, a.value

这将返回类似:

| type | description | value |
|------|-------------|-------|
| X    | test 1      | 5     |
| X    | test 2      | 9     |
| Y    | test 3      | 15    |

我需要一个新列中按类型分组的值的总和,例如

| type | description | value | total |
|------|-------------|-------|-------|
| X    | test 1      | 5     |       |
| X    | test 2      | 9     | 14    |
| Y    | test 3      | 15    | 15    |

有人可以帮帮我吗?

【问题讨论】:

    标签: sql sql-server group-by sum window-functions


    【解决方案1】:

    使用窗口函数。从您现有的查询开始:

    select 
        type, 
        description, 
        value , 
        sum(value) over(partition by type order by value) total
    from a
    group by type, description, value
    

    这假设您希望按value 对行进行排序。

    我想知道您最初是否打算 sum() 原始查询中的值:这就是您的问题似乎要说的(并且没有聚合函数的聚合通常没有意义)。在这种情况下,你会这样做:

    select 
        type, 
        description, 
        sum(value) value, 
        sum(sum(value)) over(partition by type order by value) total
    from a
    group by type, description
    

    【讨论】:

      【解决方案2】:

      假设使用描述列的数字部分进行排序,您可以使用以下逻辑。

      select 
          type, 
          description, 
          value , 
          sum(value) over(partition by type order by cast(substring(description,6,len(description)+1-6) as int)) total
      from a
      group by type, description, value;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-02
        • 1970-01-01
        • 1970-01-01
        • 2014-02-05
        • 2013-02-05
        • 1970-01-01
        相关资源
        最近更新 更多