我想用mysql存储过程做一个统计
表 class(id,grade,class,girlnum,boynum,birdate),
主键,年级,班级,女生人数,男生人数,生日
即第一列是按某个字段进行统计的,oracle有个grouping,可以第一列动态统计,mysql没怎么用过,这里请教大家了:
想要的结果是:
结果1:
班级 男生 女生
1年1班 10 20
1年2班 11 21
2年1班 12 22
结果2:
年级 男生 女生
1年级 21 41
2年级 12 22
结果3:按一年12月统计
年月 男 女
2012-1 2 2
2012-2 3 4
... ... ...
2012-12 1 0
表 class(id,grade,class,girlnum,boynum,birdate),
主键,年级,班级,女生人数,男生人数,生日
即第一列是按某个字段进行统计的,oracle有个grouping,可以第一列动态统计,mysql没怎么用过,这里请教大家了:
想要的结果是:
结果1:
班级 男生 女生
1年1班 10 20
1年2班 11 21
2年1班 12 22
结果2:
年级 男生 女生
1年级 21 41
2年级 12 22
结果3:按一年12月统计
年月 男 女
2012-1 2 2
2012-2 3 4
... ... ...
2012-12 1 0
select 班级,sum(女生人数),sum(男生人数) from class group by 班级
MYSQL中同样有GROUP, 其余的语句你可以自己先尝试一下。
Decode(Grouping(equtype),1,'总计',equtype) as equtype,
Sum(Decode(equstate,'入所',1,0)) "入所",
Sum(Decode(equstate,'待修',1,0)) "待修",
Sum(Decode(equstate,'工程',1,0)) "工程",
Sum(Decode(equstate,'返厂',1,0)) "返厂", Count(1) "总计"
FROM (SELECT * FROM (select * from t1 union select * from t2 union select * from t3) t WHERE
isnew='是' )GROUP BY GROUPING SETS((equtype),())这个grouping的意思是按动态列来统计,传入字段如果是class班级,则第一列是班级,
传入字段是grade 则第一列为年级;同理传入是birdate,则按时间统计,按那个字段属性统计是动态传入的
有没有这样的grouping?
select @fieldname ,sum(grisnum),sum(boysnum) from class group by @fieldname?