关于sqlserver分组求和的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于sqlserver分组求和的问题相关的知识,希望对你有一定的参考价值。

上图是查询出来的结果,现在需要对这张结果表进行求和,就是对BudgetSubjectCode这一个字段下面的所有以1010101开头(比如101010102,101010103....)的对应的全市合计字段,国税字段,地税字段,财政字段里面的数据进行各自的求和后把结果放在1010101这行对应的后面的四个字段里面,然后在对10101开头的(比如1010101,1010104...)全市合计字段,国税字段,地税字段,财政字段里面的数据,也就是上一步求出来的数据,在进行求和,放在10101所对应的那四个字段下面,最后在对3位的101,103这样子的求和,101就是10101和10103,10104这样子以101开头的5长度的进行求和,这些5位的对应的数据也是上一步求出的和,就是这个样子,求大神现身帮忙啊,急死了

参考技术A

这个问题主要是分组

我模拟了第一层你要分组的数据
分组sql 
select  substr(code,1,7), sum(a),sum(b),sum(c),sum(d) from test1 group by substr(code,1,7)
结果:
    code       sum(a) sum(b)  sum(c)  sum(d)

1 1010101 16         20          24        28

2 1010104 100       140       180       220

接下来通过结果集更新code 所在的记录 

下面的过程就是重复的根据substr(code,起始位置,后移多少位) 来进行分组求和 
更新。。
希望能帮到你

追问

因为我的所有数据都在一个表,所以substring这个方法其他长度在这之间的不用合计的数据也出来了,我用的这个方法输出结果和你不一样?能否加我的QQ和我细聊一下啊115545918!谢谢啦

本回答被提问者采纳

按周分组和求和

【中文标题】按周分组和求和【英文标题】:Group and sum by week 【发布时间】:2020-09-16 03:38:33 【问题描述】:

我有一个数据框,其中的列按天按这种格式显示:

a    b    c     01/01/2020  01/02/2020  01/03/2020 ...
1000 2000 3000  2           5           7
.
.
. 

这些只是任意值。我想要的是汇总日期列并按周对它们进行分组,例如week_1, week_2,... 等等。所以对于上面的例子,它看起来像:

a    b    c     week_1...
1000 2000 3000  14
.
.
. 

有没有一种干净的方法来处理列?我知道我可以通过选择日期列并将它们在轴上求和来对所有列求和,但我不确定每周如何进行。任何帮助表示赞赏!

【问题讨论】:

您可能需要融合数据框,创建一个新列来指示它们所在的组,然后进行旋转和求和 【参考方案1】:

你可以这样做:

# move `a`, `b`, `c` out of columns
df = df.set_index(['a','b','c'])

# convert columns to datetime
df.columns = pd.to_datetime(df.columns)

# groupby sum:
(df.groupby(df.columns.week, axis=1)
   .sum() 
   .add_prefix('week_')
   .reset_index()
)

输出:

      a     b     c   week_1
0  1000  2000  3000       14

【讨论】:

【参考方案2】:

尝试.stack.melt 将列放在行上,并尝试dt.week 获取周数。然后做一个groupby。这是周号的帖子:converting a pandas date to week number

【讨论】:

以上是关于关于sqlserver分组求和的问题的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server:按分组列求和并按另一列排序

sql server 分组成绩前100名的数据

如何在不使用 SQL Server/MS Access 的所有选定列的情况下进行分组和求和?

熊猫数据框分组和求和,组内,跨行值而不是按列

sqlserver2008,sql编程,group by 用法

sqlserver2008,sql编程,group by 用法