sql按月分组统计
A. sql语句实现分组统计
方法和详细的操作步骤如下:
1、第一步,创建一个测试表,详细代码见下图,转到下面的步骤。
B. sql里面根据月份分组显示,急!!!
问题一:
SELECT商品名称,SUM(casewhenmonth(销售日期)=1then销售数量else0end)1月,
SUM(casewhenmonth(销售日期)=2then销售数量else0end)2月,
SUM(casewhenmonth(销售日期)=3then销售数量else0end)3月,
SUM(casewhenmonth(销售日期)=4then销售数量else0end)4月,
SUM(casewhenmonth(销售日期)=5then销售数量else0end)5月,
SUM(casewhenmonth(销售日期)=6then销售数量else0end)6月,
SUM(casewhenmonth(销售日期)=7then销售数量else0end)7月
FROM表一
groupby商品名称
问题二:
CREATEPROCP1AS
SELECT商品名称,SUM(casewhenmonth(销售日期)=1then销售数量else0end)1月,
SUM(casewhenmonth(销售日期)=2then销售数量else0end)2月,
SUM(casewhenmonth(销售日期)=3then销售数量else0end)3月,
SUM(casewhenmonth(销售日期)=4then销售数量else0end)4月,
SUM(casewhenmonth(销售日期)=5then销售数量else0end)5月,
SUM(casewhenmonth(销售日期)=6then销售数量else0end)6月,
SUM(casewhenmonth(销售日期)=7then销售数量else0end)7月
FROM表一
groupby商品名称
C. sql截止上月查询语句,按月统计
你这种,要把月份条件写到where里,裤埋不要直接加在select那
这样试试:
SELECT时间,ISNULL(SUM(数量),0)AS故障数量
FROM
(SELECTCONVERT(varchar(7),首次接报时间,120)AS时间,
第一所属专业部门,COUNT(id)AS数量
FROMdbo.FaultsWHERE祥信(第一所属专业部门LIKEN'机电')
andcast(convert(varchar(4),dateadd(mm,-1,getdate()),120)asint)=year(首次接报时间)
andconvert(varchar(7),首次接报时间,120)<=convert(varchar(7),dateadd(mm,-1,getdate()),120)
GROUPBY首次接报时间,第一所属专业部门)ASaGROUPBY第一所属胡宴蚂专业部门,时间
D. SQL如何按年份月份统计
select left(convert(varchar(10),[datetime],120),7) as 月份,sum(Amount) as 总数
from 表
where [datetime]<='你输入的时间条件'
group by left(convert(varchar(10),[datetime],120),7)
根据你的数据结果格式重新修改了下:
select cast(datepart(year,[datetime]) as varchar)+'年'+cast(datepart(month,[datetime]) as varchar)+'月' as 月份,sum(Amount) as 总数
from 表
where [datetime]<='你输入的时间条件' and datepart(year,[datetime])=left('你输入的时间条件',4)
group by cast(datepart(year,[datetime]) as varchar)+'年'+cast(datepart(month,[datetime]) as varchar)+'月'
E. sql中根据表中一个字段分组分别统计每个分组的记录数
分组统计可以参考以下操作:
当数组重复的时候分组才有意义,因为一个人也可以分为一组,只是没有意义而已,分组采用GROUP BY语句完成,语法如下:
F. SQL按月统计,按日分组
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月查询 有需要的话自己改下
G. SQL把日期按月分类,汇总相关数据
不知道你是什么数据库,只能写个意思,具体的内容要你自己搞定。
其实就是把日期字段截取一下,如果日期本身没办法截取,那就转换一下。比如如果是oracle那么可以用to_char转换为字符型,然后再截取。如果担心1月和10月截取重复,那就多截取一位,或者查找第二个/字符的位置截取。
截取完成后,在用截取后的日期和客户分组,金额汇总求和就可以了。
我比较熟悉oracle,我用oracle的写法尝试这写一个,如果不是oracle,那么你就要自己找找类似的了。(日期也可以直接截取,不过好长时间没写忘记怎么写了,就写一个转换的吧)
select substr(to_char(日期),1,instr(to_char(日期),'/',1,2)-1) 月份,客户,sum(金额汇总) from table group by substr(to_char(日期),1,instr(to_char(日期),'/',1,2)-1) ,客户