ITPUB??ì3
新一届的微软MVP评选已经开始,欢迎各位推荐!
ITPUB论坛 » Oracle开发 » 请教一个SQL的写法

标题: 请教一个SQL的写法
离线 chengboxian
初级会员



精华贴数 0
个人空间 0
技术积分 108 (15656)
社区积分 0 (750081)
注册日期 2006-2-2
论坛徽章:1
2008北京奥运纪念徽章:射箭     
      

发表于 2008-6-30 19:04 


QUOTE:
原帖由 imake 于 2008-6-30 12:05 发表
为什么不能这样写呢?
select company,count(employee)
from  works
group by company
having count(employee) = max(count(employee))

因为学会了over,就忘了having


只看该作者    顶部
离线 sunfly1983
初级会员


精华贴数 0
个人空间 0
技术积分 888 (2106)
社区积分 1101 (895)
注册日期 2006-10-14
论坛徽章:11
生肖徽章2007版:猪     
      

发表于 2008-6-30 19:51 
select company,max((emp_num))
from works w,(select company,count(*) emp_num from works group by company ) s
where w.company=s.company;


只看该作者    顶部
离线 gthboy
万事如意


精华贴数 1
个人空间 0
技术积分 1769 (935)
社区积分 2 (29381)
注册日期 2006-6-25
论坛徽章:2
2008北京奥运纪念徽章:柔道     
      

发表于 2008-7-1 08:43 


QUOTE:
原帖由 imake 于 2008-6-30 12:05 发表
为什么不能这样写呢?
select company,count(employee)
from  works
group by company
having count(employee) = max(count(employee))

这样写在oracle上报-00935错误,分组函数的嵌套太深


__________________
只看该作者    顶部
离线 tongwenbin
一般会员



精华贴数 0
个人空间 0
技术积分 281 (6971)
社区积分 0 (1378223)
注册日期 2007-5-24
论坛徽章:0
      
      

发表于 2008-7-1 11:01 
三楼的再加个group by companny 不就行了吗,多简单

select company,max(cnt) from
(select company,count(employee) cnt from works group by company)
group by companny


只看该作者    顶部
离线 longrm
酒醉千年



来自 江西宜春
精华贴数 0
个人空间 0
技术积分 136 (13112)
社区积分 4 (19192)
注册日期 2008-3-6
论坛徽章:0
      
      

发表于 2008-7-1 15:44 
LS的好用,呵呵


只看该作者    顶部
离线 imake
大三学生



精华贴数 0
个人空间 0
技术积分 339 (5778)
社区积分 4 (18729)
注册日期 2007-5-31
论坛徽章:1
ITPUB新首页上线纪念徽章     
      

发表于 2008-7-1 22:07 


QUOTE:
原帖由 tongwenbin 于 2008-7-1 11:01 发表
select company,max(cnt) from
(select company,count(employee) cnt from works group by company)
group by companny

谢谢你的建议,我试过了,要求是只显示一条记录,这样还是多条的。


只看该作者    顶部
在线/呼叫 jvkojvko
小马哥


精华贴数 1
个人空间 0
技术积分 5659 (233)
社区积分 45991 (16)
注册日期 2007-9-10
论坛徽章:17
      
      

发表于 2008-7-2 07:41 
mysql的东西怎么跑到oracle来的


__________________
马无夜草不肥,人无外财不富。

-------------------------------
长期高价出售奥运章
只看该作者    顶部
在线/呼叫 jvkojvko
小马哥


精华贴数 1
个人空间 0
技术积分 5659 (233)
社区积分 45991 (16)
注册日期 2007-9-10
论坛徽章:17
      
      

发表于 2008-7-2 07:49 
只解决oracle下的:
Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.3.0
Connected as lxj

SQL> select * from test;

COMP              QTY
---------- ----------
comp_a              1
comp_a              2
comp_a              3
comp_b              1
comp_b              2

SQL> select max(comp)keep(dense_rank first order by cnt desc),max(cnt) from (select comp,count(1) cnt from test group by comp) a;

MAX(COMP)KEEP(DENSE_RANKFIRSTO   MAX(CNT)
------------------------------ ----------
comp_a                                  3

SQL>


__________________
马无夜草不肥,人无外财不富。

-------------------------------
长期高价出售奥运章
只看该作者    顶部
离线 gthboy
万事如意


精华贴数 1
个人空间 0
技术积分 1769 (935)
社区积分 2 (29381)
注册日期 2006-6-25
论坛徽章:2
2008北京奥运纪念徽章:柔道     
      

发表于 2008-7-2 11:39 
小马哥的sql跟6楼的一样有个小问题,就是对于几个公司人数刚好都一样多,谁也不是最多的时候,只能查到一个。


__________________
只看该作者    顶部
在线/呼叫 jvkojvko
小马哥


精华贴数 1
个人空间 0
技术积分 5659 (233)
社区积分 45991 (16)
注册日期 2007-9-10
论坛徽章:17
      
      

发表于 2008-7-2 12:29 
那就只能用dense_rank 了


__________________
马无夜草不肥,人无外财不富。

-------------------------------
长期高价出售奥运章
只看该作者    顶部
相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问