sql server分组统计的二个实例代码

发布时间:2020-12-03编辑:脚本学堂
本文介绍下,sql server中用于分组统计的二个例子,有需要的朋友,参考下吧。

sql分组统计代码1:
 

复制代码 代码示例:
select ROW_NUMBER()OVER(ORDER BY 模块分组) as 序号 ,模块分组,count(0)as 总表数,
sum(case 导换标志 when 'Y' then 1 else 0 end) as 需要迁移,
sum(case 导换标志 when 'N' then 1 else 0 end) as 不需要迁移,
sum(case 导换标志 when '?' then 1 else 0 end) as 未确定,
sum(case 是否已导 when N'是' then 1 else 0 end) as 已经导换,
convert(varchar(8),convert(decimal(6,2),100*sum(case 是否已导 when N'是' then 1.0 else 0.0 end)
/sum(case 导换标志 when 'Y' then 1.0 else 0.0 end)))+'%' as 导换比例,
convert(varchar(8),convert(decimal(6,2),100*(sum(case 是否已导 when N'是' then 1.0 else 0.0 end)+sum(case 导换标志 when 'N' then 1.0 else 0.0 end))
/count(0)))+'%' as 完成比例,
sum(case 重要级别 when '6' then 1 else 0 end) as 六级总数,
sum(case when 重要级别='6' and 是否已导=N'是' then 1 else 0 end) as 六级已导,
sum(case 重要级别 when '5' then 1 else 0 end) as 五级总数,
sum(case when 重要级别='5' and 是否已导=N'是' then 1 else 0 end) as 五级已导,
sum(case 重要级别 when '4' then 1 else 0 end) as 四级总数,
sum(case when 重要级别='4' and 是否已导=N'是' then 1 else 0 end) as 四级已导
from 样例表  group by 模块分组
order by 模块分组

sql分组统计代码2:
现有人口信息表,表中有字段年龄(整型),性别(字符)。要求统计不同年龄段的男女比例,形成如下的表格:
 

年龄  男   女
---------------------------
18以下
18-30
30-40
40-50
50-60
60以上
 

代码如下:
 

复制代码 代码示例:
select 年龄,sum(男),sum(女) 
from 

select 
  case when 年龄<18 then '18以下' else  
  case when 年龄>=18 and 年龄<30 then '18-30' else  
  case when 年龄>=30 and 年龄<40 then '30-40' else  
  case when 年龄>=40 and 年龄<50 then '40-50' else  
  case when 年龄>=50 and 年龄<60 then '50-60' else  
  case when 年龄>=60 then '60以上'  
  else '其他'  end end end end end as 年龄, 
 
  case when 性别='男' then 1 else 0 end as 男, 
 
  case when 性别='女' then 1 else 0 end as 女 
 from 人口信息表 
) as T 
group by T.年龄 
order by T.年龄