希望你喜欢

导航

sql中case when then的用法

table表中2个字段

age name

20 aa

30 bb

35 cc

40 dd

50 ee

70 ff

使用SQL语句查询得到结果如下:

年龄段 数目

青年 1

中年 3

老年 2

注:年龄小于30为青年,31到49为中年,50以上为老年。

请问SQL语句怎么写?
好评率:100%
给你一个参考。我相信你看了后就知道应该如何处理了。

有表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
提问人的追问   2009-12-29 09:59
我研究了下,还是没写出来,我得到的结果是:

年龄段 无列名

青年 1

中年 1

中年 1

中年 1

老年 1

老年 1

语句是select '年龄段'=(case when age<30 then '青年' when age>=30 and age<50 then '中年' else '老年' end),count(*) from student group by age

,请问下怎么改啊? 回答人的补充   2009-12-29 10:12
见下语句,见图参考:

SELECT a, COUNT(*)
FROM (SELECT a = CASE WHEN age < 30 THEN '青年' WHEN age >= 30 AND
age < 50 THEN '中年' WHEN age >= 50 THEN '老年' END
FROM TABLE2) a GROUP BY a

posted on 2011-04-19 21:14  希望你喜欢  阅读(740)  评论(0编辑  收藏  举报