SQL按月统计,按日分组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL按月统计,按日分组相关的知识,希望对你有一定的参考价值。

想要统计一个表里(如:表a,表内有交易时间、交易量两个字段)上月26日至本月25日,每日的交易量。每日的统计时间是:前一日14:30:01至当日14:30:00。比如:要统计6月份每天的交易量,统计的时间就是5月26日至6月25日每天的交易量。而5月26日的数据统计的起始时间是5月25日14:30:01,结束时间是5月26日14:30:00。5月27日的数据统计时间是5月26日14:30:01至5月27日17:30:00,以此类推,6月25日的数据统计时间是6月24日14:30:01至6月25日14:30:00。望高手们不吝赐教。这个东西要常用,最好能设计的可以按指定月份来查询,如先询问要查询哪个月,然后根据输入的数字来查询对应月份的交易量。
已通过QQ群里的朋友得到解决办法。谢谢楼下的朋友。

SELECT DISTINCT CONVERT(VARCHAR(20),JCSJ,23)+' 14:30:00.000' AS datetime1,
CONVERT(VARCHAR(20),DATEADD(DAY,1,JCSJ),23)+' 14:30:00.000' AS datetime2
INTO #table
FROM dbo.T_jcxxdj_a
WHERE JCSJ BETWEEN '2008-06-25 14:30:00.000' AND '2008-07-25 14:30:00.000'
ORDER BY datetime1

SELECT b.datetime1,b.datetime2,sum(a.jfje)AS 金额
FROM dbo.T_jcxxdj_a a, #table b
WHERE a.JCSJ>=b.datetime1 AND a.JCSJ<b.datetime2
GROUP BY b.datetime1,b.datetime2

DROP TABLE #table
GO

参考技术A declare @yf int
declare @rqxx varchar (30)
declare @rqsx varchar (30)
set @yf = '' --输入月份
set @rqxx =convert(varchar(30),@yf-1)+'月'+'26日'+'14:30:00'
set @rqxx =convert(varchar(30),@yf)+'月'+'25日'+'14:30:00'
select sum(交易量) from a where 交易时间 between @rqxx and @rqsx
这个只是个思路
上面我把@rqxx,@rqsx 定义为 varchar 你在具体定义时 要和a中交易时间一致,时间格式也要改 而且这个月份只能实现 2月--12月查询 有需要的话自己改下

以上是关于SQL按月统计,按日分组的主要内容,如果未能解决你的问题,请参考以下文章

Mysql按周,按月,按日,按小时分组统计数据

MySql按周,按月,按日分组统计数据

MySql按周,按月,按日分组统计数据

Mysql按日周月进行分组统计

按天周月统计数据

MySQL# mysql按日周月进行分组统计