问下大家,这个SQL语句应该怎么写?? create table test( name varchar ,address varchar ,age varchar)我要根据age字段重复出现的次数,用desc排序谢谢!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 select name,count(*) from testgroup by 1order by 2 desc 上面的是按照name出现的次数降序排列。你可以改成按照age的。 Test thisselect *,rank() over(partition by age order by name) from test; 最近研究的另外的一个:select name,address,age,count(age) "Frenq of age"from testgroup by namehaving count(age)>=1order by count(age) desc;试试是不是你想要的~~ 你的问题还会解决了~~ 昨天发帖时没有测试工具 很不好意思的!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.ageorder 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排列 Now AnotherSQL> 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行。相对简单些~~ select age,count(1)'数量' from test group by age order by count(1) 方法很多看哈這個博客http://jack198409.itpub.net/ 存储过程求解,有个变量怎么处理 請問在ORACLE的存儲過程中如何使用事務處理﹖ oracle 10g 输出文件路径问题? 问个DEPHI开发方面的问题 怎样再触发器中并行执行多条sql语句? 新手问题 新建用户后连接, 提示"没有 CREATE SESSION 权限;登录被拒绝",怎办? 求Delete语句,删除前需判断是否存在(急,立刻结)。 oralce 连接另一个oralce ,oralce 连接 sqlserver !!! 表更新的问题,急 sql查询的问题 关于时间修改的问题
select name,count(*)
from test
group by 1
order by 2 desc
from test
group by name
having count(age)>=1
order by count(age) desc;试试是不是你想要的~~
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排列
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行。
相对简单些~~
select age,count(1)'数量' from test group by age order by count(1)
看哈這個博客http://jack198409.itpub.net/