您的位置:首页 > 数据库

SQL查询按年、月累计求和

2017-02-18 19:15 148 查看
先有如下表格



C为主键

想查询出每年每月的累计交易额

SELECT
年,
月,
交易额,
(SELECT
SUM(交易额)
FROM
test1 AS a
WHERE
b.c >= a.c AND a.月 = b.月
AND a.年 = b.年) AS 交易累计金额,
c
FROM
test1 AS b


查出如下结果:





在红框内的条件,可理解为同时以年为单位,不同年份就要重新计算,并以月为单位计算,不同月就要重新累计求和。

如果去掉年份相等条件,则会把所有相等月的交易额累计计算。

如果去掉月份相等条件,则会把所有相等年的交易额累计计算。

如果想不以年月为单位计算求和,而是简单的累计求和,去掉年月相等条件即可。

本文中的年月可替代为任意其他维度,比如不同分公司的不同部门,查询每个分公司每个部门的交易累计额。

当然也可以直接groupby,不过如果要求查询出每个部门的交易时间及累计金额变化趋势,直接group by会少了时间的列?

另外,我在网上查阅到有人用sum()的方法效率较低,如果数据量大了,会很慢。

本人sql新手···

欢迎大神来讨论···· 

最后有个问题没弄明白,b.c>=a.c 这个条件有什么作用?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: