sql中case when then的用法
时间:2011-04-19 来源:希望你喜欢
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