用SQL语句查询年龄分段的分组查询 我的数据表格式如下

想查出的结果是... 想查出的结果是 展开
 我来答
zxchan1992
2015-05-07 · TA获得超过278个赞
知道小有建树答主
回答量:179
采纳率:0%
帮助的人:231万
展开全部
--不知道你要的是不是这样的结果

Create table T 
(
籍贯 varchar(10) ,性别 varchar(2), 生日 varchar(10) 
)
 
insert into t values('四川' , '男',  '19890627') 
insert into t values('新疆' , '男',  '19930711') 
insert into t values('河南' , '男',  '19890623')
insert into t values('四川' , '女',  '19880512') 
insert into t values('新疆' , '男',  '19950425') 
insert into t values('河南' , '女',  '19800304')

Select  籍贯,性别 ,
Sum(Case When 年龄 <=20 Then 1 Else 0 End) As [0-20岁(人)],
Sum(Case When 年龄 Between 21 And 40 Then 1 Else 0 End) As [21-40岁(人)],
Sum(Case When 年龄 Between 41 And 60 Then 1 Else 0 End) As [41-60岁(人)],
Sum(Case When 年龄 >=61 Then 1 Else 0 End) As [60岁以上(人)] 
From
(
Select *, Year(GETDATE())- Year(convert(Datetime,生日)) As 年龄
From t
) s
Group By 籍贯,性别 
with rollup

TableDI
2024-07-18 广告
仅需3步!不写公式自动完成Excel vlookup表格匹配!Excel在线免,vlookup工具,点击26步自动完成表格匹配,无需手写公式,免费使用!... 点击进入详情页
本回答由TableDI提供
tongyinqiu
推荐于2017-09-24 · TA获得超过206个赞
知道小有建树答主
回答量:246
采纳率:81%
帮助的人:175万
展开全部
select
province,
case when birthday>'20150507' and birthday<='19950507' then 1 else null end,
case when birthday>'时间段' and birthday<='时间段' then 1 else null end
from 表
group by province
更多追问追答
追问

亲  没有数据啊  怎么出现这种呢  还有就是能不能把每个省的总数也一起显示出来啊?就是在province 后面加一列显示 总人数。谢谢大神了

追答
select
province,
COUNT(case when birthday>'20150507' and birthday'时间段' and birthday<='时间段' then 1 else null end)
from 表
group by province

抱歉 写漏了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式