先有如下表格
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 这个条件有什么作用?