当前位置: 数据库>sqlserver
sql server分组统计的二个实例代码
来源: 互联网 发布时间:2014-08-29
本文导语: 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 导换标志...
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 模块分组
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以上
---------------------------
18以下
18-30
30-40
40-50
50-60
60以上
代码如下:
代码示例:
select 年龄,sum(男),sum(女)
from
(
select
case when 年龄=18 and 年龄=30 and 年龄=40 and 年龄=50 and 年龄=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.年龄
from
(
select
case when 年龄=18 and 年龄=30 and 年龄=40 and 年龄=50 and 年龄=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.年龄