有这么个需求
有个student表
有3个字段
name age sex
张三 11 男
李四 12 女
王五 9 男
刘六 13 男
赵七 10 男
冯八 8 女
孙九 10 男
郑十 11 女
郭十一 15 女
蒋十二 7 男
我想得到这么个结果。年龄从最小的基数加5岁。5岁为一个年龄段,求出没个年龄段的男女数年龄段 男生数 女生数
7-12 5 2
12-17 1 2我分不多。我尽量给。先谢谢各位了
有个student表
有3个字段
name age sex
张三 11 男
李四 12 女
王五 9 男
刘六 13 男
赵七 10 男
冯八 8 女
孙九 10 男
郑十 11 女
郭十一 15 女
蒋十二 7 男
我想得到这么个结果。年龄从最小的基数加5岁。5岁为一个年龄段,求出没个年龄段的男女数年龄段 男生数 女生数
7-12 5 2
12-17 1 2我分不多。我尽量给。先谢谢各位了
sum(case when sex = '男' then 1 else 0 end) [男生数],
sum(case when sex = '男' then 1 else 0 end) [女生数]
from
(
select case when age between 7 and 12 then '7-12'
when age between 13 and 17 then '12-17'
else ''
end 年龄段, sex
from tb
) t
group by 年龄段
create table student(name varchar(10), age int, sex varchar(10))
insert into student values('张三' , 11 ,'男')
insert into student values('李四' , 12 ,'女')
insert into student values('王五' , 9 ,'男')
insert into student values('刘六' , 13 ,'男')
insert into student values('赵七' , 10 ,'男')
insert into student values('冯八' , 8 ,'女')
insert into student values('孙九' , 10 ,'男')
insert into student values('郑十' , 11 ,'女')
insert into student values('郭十一', 15 ,'女')
insert into student values('蒋十二', 7 ,'男')
goselect 年龄段,
sum(case when sex = '男' then 1 else 0 end) [男生数],
sum(case when sex = '女' then 1 else 0 end) [女生数]
from
(
select case when age between 7 and 12 then '7-12'
when age between 13 and 17 then '12-17'
else ''
end 年龄段, sex
from student
) t
group by 年龄段drop table student /*
年龄段 男生数 女生数
----- ----------- -----------
12-17 1 1
7-12 5 3(所影响的行数为 2 行)
*/
INSERT @a SELECT '张三', 11 ,'男'
union all select '李四', 12 ,'女'
union all select '王五', 9 ,'男'
union all select '刘六', 13 ,'男'
union all select '赵七', 10 ,'男'
union all select '冯八', 8 ,'女'
union all select '孙九', 10 ,'男'
union all select '郑十', 11 ,'女'
union all select '郭十一', 15 ,'女'
union all select '蒋十二', 7 ,'男' SELECT
LTRIM(m+(age-7)/5*5)+'-'+LTRIM((m+(age-7)/5*5+5)) 年龄段,
sum(CASE WHEN sex='男' then 1 else 0 END)男,
SUM(CASE WHEN sex='女' then 1 else 0 END)女
FROM
(
SELECT NAME,age,sex,m,(age-7)/5 s FROM @a a,
(SELECT MIN(age) m,(MAX(age)-Min(age))/5+1 x FROM @a ) b
)aa
GROUP BY LTRIM(m+(age-7)/5*5)+'-'+LTRIM((m+(age-7)/5*5+5))--result
/*年龄段 男 女
------------------------- ----------- -----------
12-17 1 2
7-12 5 2(所影响的行数为 2 行)*/