SQL中CASE WHEN THEN的用法
table表中2个字段agename20aa30bb35cc40dd50ee70ff使用SQL语句查询得到结果如下:年龄段数目青年1中年3老年2注:年龄小于30为青年,3...
table表中2个字段age name20 aa30 bb35 cc40 dd50 ee70 ff使用SQL语句查询得到结果如下:年龄段 数目青年 1中年 3老年 2注:年龄小于30为青年,31到49为中年,50以上为老年。请问SQL语句怎么写?
展开
推荐于2018-05-10
展开全部
select a,count(*) from
(select a=case when age<30 then '青年' --查询age <30的为青年,“青年”直接赋给a
when age>=30 and age<50 then '中年'
when age>=50 then '老年' end
from test --括号里查出每条记录中对应年龄段属于哪个值 )
a_test --将查出的值 放到 a_test中去
group by a --按a_test 中的字段 a 分组统计数据
(select a=case when age<30 then '青年' --查询age <30的为青年,“青年”直接赋给a
when age>=30 and age<50 then '中年'
when age>=50 then '老年' end
from test --括号里查出每条记录中对应年龄段属于哪个值 )
a_test --将查出的值 放到 a_test中去
group by a --按a_test 中的字段 a 分组统计数据
2013-07-12
展开全部
给你一个参考。我相信你看了后就知道应该如何处理了。有表student(id,name,score)根据分数列(score)每10分为一段,查询每段分数的人数。
SELECT a, COUNT(*)
FROM (SELECT a = CASE WHEN score >= 0 AND
score < 10 THEN '0-9' WHEN score >= 10 AND
score < 20 THEN '10-19' WHEN score >= 20 AND
score < 30 THEN '20-29' WHEN score >= 30 AND
score < 40 THEN '30-39' WHEN score >= 40 AND
score < 50 THEN '40-49' WHEN score >= 50 AND
score < 60 THEN '50-59' WHEN score >= 60 AND
score < 70 THEN '60-69' WHEN score >= 70 AND
score < 80 THEN '70-79' WHEN score >= 80 AND
score < 90 THEN '80-89' WHEN score >= 90 AND
score < 100 THEN '90-99' ELSE '100' END
FROM student) a
GROUP BY a
SELECT a, COUNT(*)
FROM (SELECT a = CASE WHEN score >= 0 AND
score < 10 THEN '0-9' WHEN score >= 10 AND
score < 20 THEN '10-19' WHEN score >= 20 AND
score < 30 THEN '20-29' WHEN score >= 30 AND
score < 40 THEN '30-39' WHEN score >= 40 AND
score < 50 THEN '40-49' WHEN score >= 50 AND
score < 60 THEN '50-59' WHEN score >= 60 AND
score < 70 THEN '60-69' WHEN score >= 70 AND
score < 80 THEN '70-79' WHEN score >= 80 AND
score < 90 THEN '80-89' WHEN score >= 90 AND
score < 100 THEN '90-99' ELSE '100' END
FROM student) a
GROUP BY a
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐于2017-06-23
展开全部
select 年龄段,count(num) as nums from
(select '年龄段'=(case when age<30 then '青年' when age>=30 and age<50 then '中年' else '老年' end),count(*) as num from tage group by age) as a
group by 年龄段
你把你的sql语句这样改试试
(select '年龄段'=(case when age<30 then '青年' when age>=30 and age<50 then '中年' else '老年' end),count(*) as num from tage group by age) as a
group by 年龄段
你把你的sql语句这样改试试
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select
a,count(*)
from
(
select
a=case
when
age<30
then
'青年'
--查询age
<30的为青年,“青年”直接赋给a
when
age>=30
and
age<50
then
'中年'
when
age>=50
then
'老年'
end
from
test
--括号里查出每条记录中对应年龄段属于哪个值
)
a_test
--将查出的值
放到
a_test中去
group
by
a
--按a_test
中的字段
a
分组统计数据
a,count(*)
from
(
select
a=case
when
age<30
then
'青年'
--查询age
<30的为青年,“青年”直接赋给a
when
age>=30
and
age<50
then
'中年'
when
age>=50
then
'老年'
end
from
test
--括号里查出每条记录中对应年龄段属于哪个值
)
a_test
--将查出的值
放到
a_test中去
group
by
a
--按a_test
中的字段
a
分组统计数据
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select case when age<30 then N'青年' when age between 30 and 49 then N'中年' else N'老年' end as [年龄段],count(name) as [数目] from table
group by case when age<30 then N'青年' when age between 30 and 49 then N'中年' else N'老年' end
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询