SQL查询按年、月累计求和
2017-02-18 19:15
148 查看
先有如下表格
C为主键
想查询出每年每月的累计交易额
查出如下结果:
在红框内的条件,可理解为同时以年为单位,不同年份就要重新计算,并以月为单位计算,不同月就要重新累计求和。
如果去掉年份相等条件,则会把所有相等月的交易额累计计算。
如果去掉月份相等条件,则会把所有相等年的交易额累计计算。
如果想不以年月为单位计算求和,而是简单的累计求和,去掉年月相等条件即可。
本文中的年月可替代为任意其他维度,比如不同分公司的不同部门,查询每个分公司每个部门的交易累计额。
当然也可以直接groupby,不过如果要求查询出每个部门的交易时间及累计金额变化趋势,直接group by会少了时间的列?
另外,我在网上查阅到有人用sum()的方法效率较低,如果数据量大了,会很慢。
本人sql新手···
欢迎大神来讨论····
最后有个问题没弄明白,b.c>=a.c 这个条件有什么作用?
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 这个条件有什么作用?
相关文章推荐
- Sql查询技巧:联合查询,求和,求平均数等。
- 【原创】SQL数据累计求和等聚合操作
- sql查询语句问题- sum求和的值作为查询条件
- 自动为sql查询出来的结果求和
- oracle的一些sql查询例子,(子查询、分组查询、求和、求平均数等等)都囊括到了。(1)
- SQL集合运算参考及案例(一):列值分组累计求和
- SQL集合运算参考及案例(一):列值分组累计求和
- SQL前后相减、累计求和、多行合并
- oracle的一些sql查询例子,(子查询、分组查询、求和、求平均数等等)都囊括到了。(2)
- 大数据学习24:hive_sql_累计求和小案例
- 在数据表中用sql实现累计计算查询(sql server 2000)
- sql 多字段求和并作为查询条件
- T-Sql 语句在查询语句中累计每行中的某个数值字段
- 多表sql查询求和
- sql相关子查询,动态交叉表篇
- sql语句的联合查询(join 用法)
- 元函数在SQL查询中应用实例分析【续上篇】
- sql日记(相关子查询,动态交叉表篇)
- SQL查询语句精华使用简要 | From:hoky.org
- T-SQL命令在SQL Server查询中的运用