当前位置:首页 » 编程语言 » sql按月统计数量
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql按月统计数量

发布时间: 2022-09-03 19:22:12

‘壹’ mysql 统计每月的数量 sql

数据表中不存在的月份也要显示,建议创建一个从1到12月份的表作为比对表。如果不方便创建月份比对表则可以用select 1到12的办法来虚拟这个月份比对表,但是语句会有些冗长。请参考下列写法:

selectmonths.year,months.month,
concat(ifnull(t.sumMonthNum,'0'),
'/',months.sumYearNum)as`月/年比`
from
(select*from
(selectyear(time)asyear,
sum(num)assumYearNum
fromabcgroupbyyear(time))years,
(select1asmonthunionall
select2unionall
select3unionall
select4unionall
select5unionall
select6unionall
select7unionall
select8unionall
select9unionall
select10unionall
select11unionall
select12)months)monthsleftjoin
(selectyear(time)asyear,
month(time)asmonth,
sum(num)assumMonthNum
fromabcgroupbyyear(time),month(time))t
onmonths.month=t.month
orderbymonths.year,months.month;

实验截图如下:

源表数据

‘贰’ 求高手帮写一SQL语句 按月统计的

统计每个id每个月的访问次数。
SELECT userid, SUBSTRING(accessTime, 1, 6) AS Expr2, COUNT(*) AS Expr1
FROM TableA
GROUP BY userid, SUBSTRING(accessTime, 1, 6)
此语句查询结果:
1000001 201001 2
1000003 201002 2
1000001 201003 1
1000002 201003 1
------------------
你的查询和我的一样。你想要accessTime,这是不可能的,因为SQL语句中使用了group by子句,那么select的字段只能在group by的字句里。
你要清楚,你现在做的是统计,不是查明细。如果查明细的话,再写一条语句好了。

‘叁’ sql 分类按月统计

方法一:这种方法列名是固定的。
select 名称,
sum(case when substring(convert(varchar(7),日期,120),6,2)='09' then 出售数量 else 0 end) as '9月',
sum(case when substring(convert(varchar(7),日期,120),6,2)='10' then 出售数量 else 0 end) as '10月'
from 表
group by 名称

方法二:这种方法虽然麻烦一些,但是支持列名不确定的情况。
declare @sql varchar(2000)
declare @mon varchar(2)

set @sql = 'select 名称'
select @sql = @sql + ',sum(case mon when '''+mon+''' then 出售数量 end) ['+mon+'月]'
from (select distinct substring(convert(varchar(7),日期,120),6,2) mon from 表) as a
select @sql = @sql+' from 表 group by 名称'
exec(@sql)

‘肆’ sql 语句怎么按照月去统计数据!

Select foodid, month(datetime), sum(mak) from [tablename1] where year(datetime) = 2013 group by foodid,month(datetime)

‘伍’ 求一个按月统计数据的SQL语句,表如下:

用Oracle SQL表结构:Mytable(userid,mm,PayMoney)

Month(id,mm)
select id,x.mm Month,decode(sign(to_date(x.mm,'yyyy-mm')-to_date('2012-08','yyyy-mm')),1,nvl(to_char(payMoney),'null'),nvl(payMoney,0)) PayMoney
from Month x,mytable y where x.id=y.userid(+) and x.mm=y.mm(+);
在程序中可以吧'2012-08'换成变量就可以了。

‘陆’ SQL语句怎么按照月统计数量

selectconvert(varchar(7),datetime,120)date,foodid,userid,sum(mak)fromtablename
groupbyconvert(varchar(7),datetime,120),foodid,userid
你测试看看。是不是这样。

‘柒’ sql 查询每个月的记录数量

SELECT LEFT(CONVERT(VARCHAR(10), [入库时间], 120), 7) AS [月份], COUNT(*) AS [数量]

FROM [表名]
GROUP BY LEFT(CONVERT(VARCHAR(10), [入库时间], 120), 7)

‘捌’ SQL 查询每个月统计的数据。

select 月份,sum(isnull(count,0)) from A group by 月份
你是不是整个月没数据的就自动要补一条记录为0的
我想了一下,简单的这样写,都不可能出现补零的数据,毕竟这个月份的数据并没有出现在表中。
看实际情况,必要时候使用union
既然知道只有两个月的,那就补上
select * from
(
select 月份,sum(isnull(count,0)) from A group by 月份
union all
select '2012-02',0
union all
select '2013-05',0
) a
order by 月份
不过话说你是不是年份弄错了,从2012直接跳到2013?

我这个方法还搞不定吗?