免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3875 | 回复: 11
打印 上一主题 下一主题

求一个sq语句l [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-04-17 18:10 |只看该作者 |倒序浏览
一个表的属性如下:
test
A1        A2        A3
tom        china        male
jim        usa        male
lily        usa        female
lucy        usa        female
jerry        china        male


利用group by 语句查询
select A2, count(*) from        test
group by A2
order by count(*) desc
得到的结果为

usa        3
china        2

我想得到这样的结果

jim        usa       
lily        usa       
lucy        usa       
tom        china       
jerry        china       

如果用 select A1,A2 from test
group by A2
order by count(*) desc
的话,oracle就会报错

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
2 [报告]
发表于 2010-04-17 19:47 |只看该作者
select A1,A2
from test
order by A2 desc

论坛徽章:
0
3 [报告]
发表于 2010-04-17 20:55 |只看该作者
select  A1, A2 from ( select * from test order by A2 desc);

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
4 [报告]
发表于 2010-04-18 11:36 |只看该作者
select  A1, A2 from ( select * from test order by A2 desc);
yoron 发表于 2010-04-17 20:55



    真的是多此一举啊。

论坛徽章:
0
5 [报告]
发表于 2010-04-18 17:52 |只看该作者
不好意思,我没说明白,大家误解我的意思了。我就是想利用A2的分组信息,把A2数量多的排到前面(比如usa有3个,排到了前面,china是2个,排到了后面),同时结果里面还包含A1的属性值

论坛徽章:
0
6 [报告]
发表于 2010-04-18 23:15 |只看该作者
partition 这个关键字可以使得group by的时候,在select后面不出现count(*)

论坛徽章:
0
7 [报告]
发表于 2010-04-19 09:03 |只看该作者
解决了,谢谢大牛。语句是这样的

Select A1,A2,count(A2)over(partition by A2 ) from test
order by count(A2)over(partition by A2 )

感觉写的好笨哪

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
8 [报告]
发表于 2010-04-19 09:37 |只看该作者
原来是这样。呵呵;

论坛徽章:
0
9 [报告]
发表于 2010-04-19 20:34 |只看该作者
跟踪,学习. 被楼主搞糊涂了,3楼的语句刚发表就看出问题了.呵呵,懒得改了.

论坛徽章:
0
10 [报告]
发表于 2010-04-19 23:03 |只看该作者
本帖最后由 yoron 于 2010-04-20 17:25 编辑

SQL> select * from test;

A1         A2         A3
---------- ---------- ----------
tom        china      male
jim        usa        male
lily       usa        female
lucy       usa        female
jerry      china      male


SQL>select A1,A2,count(A2)over(partition by A2) from test order by count(A2)over(partition by A2);

A1         A2         COUNT(A2)OVER(PARTITIONBYA2)
---------- ---------- ----------------------------
jerry      china                                 2
tom        china                                 2
jim        usa                                   3
lily       usa                                   3
lucy       usa                                   3



SQL> select A1,A2 from test order by count(A2)over(partition by A2) ;

A1         A2
---------- ----------
jerry      china
tom        china
jim        usa
lily       usa
lucy       usa

SQL> select A1,A2 from test order by count(A2)over(partition by A2) desc;

A1         A2
---------- ----------
lucy       usa
jim        usa
lily       usa
jerry      china
tom        china


学习........
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP