Select sum(case when age >= 18 and age < 25 then 1 else 0 end) as 18-25,
sum(case when age >= 25 and age < 30 then 1 else 0 end) as 25-30,
sum(case when age >= 30 and age < 40 then 1 else 0 end) as 30-40,
sum(case when age >= 40 and age < 50 then 1 else 0 end) as 40-50,
sum(case when age >= 50  then 1 else 0 end) as 50
from 表

解决方案 »

  1.   

    select count(*)
    from 表
    group by case when 年龄<25 then -1 when 年龄>49 then 0 else
             floor(年龄/5) end
      

  2.   

    SELECT SUM(CASE WHEN age BETWEEN 18 AND 25 THEN 1 ELSE 0 END) AS 18-25的人数,
           SUM(CASE WHEN age BETWEEN 26 AND 30 THEN 1 ELSE 0 END) AS 26-30的人数,
           SUM(CASE WHEN age BETWEEN 31 AND 40 THEN 1 ELSE 0 END) AS 31-40的人数,
           SUM(CASE WHEN age BETWEEN 41 AND 50 THEN 1 ELSE 0 END) AS 41-50的人数,
           SUM(CASE WHEN age>50  THEN 1 ELSE 0 END) AS 50以上的人数
    FROM student
      

  3.   

    哗,谢谢各位,大开眼界啦,,最后我采取这种方法
    select count(age) from 表
    group bycase when age<=25 then -1
    when age>25 and age<=30 then -2
    when age>30 and age<=40 then -3
    when age>40 and age<=50 then -4
    when age>50 then -5
    end
      

  4.   

    但是有问题,假如在用group by,得出的数据并不明确,不知哪个数值为哪条记录,看来,还是只能用 yujohny(踏网无痕)兄 与  txlicenhe(马可&不做技术高手)兄的方法了..
      

  5.   

    SELECT SUM(CASE WHEN age BETWEEN 18 AND 25 THEN 1 ELSE 0 END) AS '18-25的人数',
           SUM(CASE WHEN age BETWEEN 26 AND 30 THEN 1 ELSE 0 END) AS '26-30的人数',
           SUM(CASE WHEN age BETWEEN 31 AND 40 THEN 1 ELSE 0 END) AS '31-40的人数',
           SUM(CASE WHEN age BETWEEN 41 AND 50 THEN 1 ELSE 0 END) AS '41-50的人数',
           SUM(CASE WHEN age>50  THEN 1 ELSE 0 END) AS '50以上的人数'
    FROM student
      

  6.   

    是的,我也比较喜爱用group by方法,但是要看情况了,呵。。谢谢各位了..