create table test
(
  name varchar
 ,address varchar
 ,age varchar
)
我要根据age字段重复出现的次数,用desc排序
谢谢!!

解决方案 »

  1.   


    select name,count(*)
      from test
    group by 1
    order by 2 desc
      

  2.   

    上面的是按照name出现的次数降序排列。你可以改成按照age的。
      

  3.   

    Test thisselect *,rank() over(partition by age order by name) from test;
      

  4.   

    最近研究的另外的一个:select name,address,age,count(age) "Frenq of age"
    from test
    group by name
    having count(age)>=1
    order by count(age) desc;试试是不是你想要的~~
      

  5.   

    你的问题还会解决了~~ 昨天发帖时没有测试工具 很不好意思的!
    1)我没有建立和你一样的表,是我自己的表
    --Table StructSQL> desc testa;
     名称                                      是否为空? 类型
     ----------------------------------------- -------- ----------------------
     ID                                                 NUMBER(3)
     NAME                                               VARCHAR2(6)
     ADDR                                               VARCHAR2(6)
     AGE                                                NUMBER(3)--Datas:SQL> select * from testa;        ID NAME   ADDR          AGE
    ---------- ------ ------ ----------
             3 电子   南京           23
             5 物理   北京           23
             6 物理   河北           25
             1 电脑   上海           23
             2 电子   北京           22
             4 物理   芜湖           22
             7 艺术   上海           21
             8 歌剧   苏州           16
             9 沈亮   上海           22已选择9行。--SQL CODE:select id,name,m.age,f_time from(select age,count(age) f_time from testa
     group by age
     )m left join testa n on m.age=n.age
    order by  m.f_time desc,m.age;        ID NAME          AGE     F_TIME
    ---------- ------ ---------- ----------
             2 电子           22          3
             4 物理           22          3
             9 沈亮           22          3
             1 电脑           23          3
             5 物理           23          3
             3 电子           23          3
             8 歌剧           16          1
             7 艺术           21          1
             6 物理           25          1已选择9行。
    2)这里做了order by m.age意思是要有出现AGE次数相同时 按照年龄ASC排列
      

  6.   


    Now  Another
    SQL> select id,name,addr,age,count(*) over(partition by age)times_age
      2  from testa
      3  order by times_age desc,age,id;        ID NAME   ADDR          AGE  TIMES_AGE
    ---------- ------ ------ ---------- ----------
             2 电子   北京           22          3
             4 物理   芜湖           22          3
             9 沈亮   上海           22          3
             1 电脑   上海           23          3
             3 电子   南京           23          3
             5 物理   北京           23          3
             8 歌剧   苏州           16          1
             7 艺术   上海           21          1
             6 物理   河北           25          1已选择9行。
    相对简单些~~ 
      

  7.   


    select age,count(1)'数量' from test group by age order by count(1)
      

  8.   

    方法很多
    看哈這個博客http://jack198409.itpub.net/