我想用一条sql实现,下边的功能:create table test_age(
id number(2),
age number(6));
insert into test_age
values(1, 25);
insert into test_age
values(2, 30);
insert into test_age
values(3, 45);
insert into test_age
values(4, 50);
希望的得到的查询结果是:年龄段      人数
--------  -------
20-30        2
31-40        1
41-50        2

解决方案 »

  1.   

    SELECT CASE WHEN age BETWEEN 20 AND 30 THEN '20-30' WHEN age BETWEEN 31 AND 40 THEN '31-40' WHEN age BETWEEN 41 AND 50 THEN '41-50' END,
    COUNT(*)
    FROM test_age
    GROUP BY CASE WHEN age BETWEEN 20 AND 30 THEN '20-30' WHEN age BETWEEN 31 AND 40 THEN '31-40' WHEN age BETWEEN 41 AND 50 THEN '41-50' END
    /
      

  2.   

    SELECT DECODE(
    TRUNC((AGE-1)/10),
    1,'20-30',
    2,'20-30',
    3,'31-40',
    4,'41-50'
    ),COUNT(*)
    FROM TEST_AGE
    GROUP BY DECODE(
    TRUNC((AGE-1)/10),
    1,'20-30',
    2,'20-30',
    3,'31-40',
    4,'41-50'
    );
      

  3.   

    我给你的方法一种是CASE 一种是DECDOE,这就是常用的两种了,仔细看看吧
      

  4.   

    boydgmx(梦霄) 大蝦,居然還能寫case語句,能介紹一下類似的例子麼?不勝感激!
      

  5.   

    CASE WHEN 条件 THEN 值 [WHEN 条件 THEN 值] [ELSE 值] END
      

  6.   

    up
    good   study.....