关于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/MS Access 的所有选定列的情况下进行分组和求和?