高分求个SQL

boboge2008 2010-09-28 11:05:22
字段 网元 标题(默认为1)
a aaa
b bbb
c ccc
求,网元的最大的前5位 ,然后最大前5位中,标题最大的前5位
select top 5 [网元],count([标题]) as 数量 FROM [dbo].[table] group by [ObjectName] order by 数量 desc
最后想的倒 如:
网元 数量 标题
a 3000 ccc
b 2000 ddd
注:最后排出来的标题是某个最多网元中,比如a中最多的标题

希望高手能帮下,在线等,麻烦大家!
...全文
90 点赞 收藏 15
写回复
15 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
boboge2008 2010-09-28
13楼正解,谢谢,又学到了新东西!
回复
boboge2008 2010-09-28
[Quote=引用 10 楼 yhtapmys 的回复:]
引用 8 楼 boboge2008 的回复:
select top 5 [网元],count(*) FROM [dbo].[table] where [标题] in
(select top 5 [标题] from [dbo].[table] group by [标题] order by
count(*) desc) group by [网元] order by count(*) desc
……
[/Quote]

朋友这个sql我开始也这样写的,但是不对,不能让网元和标题同时分组,如果同时分组,得到的网元就有相同的了,
表结构
网元 标题
就这两个字段
回复
SQLCenter 2010-09-28
外面忘了 group by [网元]

select top 5 [网元],count(*) as 数量,
[标题]=(select top 1 [标题] from [dbo].[table] where [网元]=t.[网元] group by [标题] order by count(1) desc)
FROM [dbo].[table] as t group by [网元] order by 数量 desc
回复
SQLCenter 2010-09-28
select top 5 [网元],count(*) as 数量,
[标题]=(select top 1 [标题] from [dbo].[table] where [网元]=t.[网元] group by [标题] order by count(1) desc)
FROM [dbo].[table] as t order by 数量 desc
回复
boboge2008 2010-09-28
[Quote=引用 9 楼 yhtapmys 的回复:]
求,网元的最大的前5位 ,然后最大前5位中,标题最大的前5位

-----------------------

这个还要另外查找?网元最大的前五中相等网元的很多?
[/Quote]
找倒最大前5个位网元后,比如有a,b,c,d,e是最大的5个网元,然后a中 有3000个标题为aaa,2000个标题为bbb, b中,有2000个标题为 ddd ,有1000个为eee
最后的结果应该是
网元 数量 标题
a 5000 aaa(3000)
b 3000 ddd(2000)
看这样我解释得明白不?
回复
yhtapmys 2010-09-28
[Quote=引用 8 楼 boboge2008 的回复:]
select top 5 [网元],count(*) FROM [dbo].[table] where [标题] in
(select top 5 [标题] from [dbo].[table] group by [标题] order by
count(*) desc) group by [网元] order by count(*) desc

刚刚这个sql出来了,但是,不能显示标……
[/Quote]

猜下
你表结构是甚来的?

select top 5 [网元],count(*),[标题] FROM [dbo].[table] where [标题] in
(select top 5 [标题] from [dbo].[table] group by [标题] order by
count(*) desc) group by [网元],[标题] order by count(*) desc
回复
yhtapmys 2010-09-28
求,网元的最大的前5位 ,然后最大前5位中,标题最大的前5位

-----------------------

这个还要另外查找?网元最大的前五中相等网元的很多?
回复
boboge2008 2010-09-28
select top 5 [网元],count(*) FROM [dbo].[table] where [标题] in
(select top 5 [标题] from [dbo].[table] group by [标题] order by
count(*) desc) group by [网元] order by count(*) desc

刚刚这个sql出来了,但是,不能显示标题,就差显示标题
网元 数量
CQGM341B7 1284398
CQGM341B3 946873
CQGM331B10 582378
CQGM111B14 461280
CQGM111B11 160416
回复
zsh0809 2010-09-28
[Quote=引用 6 楼 dawugui 的回复:]

SQL code
最好给出完整的表结构,测试数据,计算方法和正确结果.


发帖注意事项
http://topic.csdn.net/u/20091130/21/fb718680-98ff-4afb-98d8-cff2f8293ed5.html?24281
[/Quote].....
回复
dawugui 2010-09-28
最好给出完整的表结构,测试数据,计算方法和正确结果.


发帖注意事项
http://topic.csdn.net/u/20091130/21/fb718680-98ff-4afb-98d8-cff2f8293ed5.html?24281
回复
SQLCenter 2010-09-28
网元最大是什么意思,数量 还是 值本身 最大
回复
ws_hgo 2010-09-28
表结构
测试数据
及其结果
回复
boboge2008 2010-09-28
我写的这个,只是把网元排出来了,里面还应该有个语句,判断该网元中,最多的标题进行排序,其实用程序实现和简单,可以排了网元在遍历,但是用sql,估计脑袋卡了,想不出来,麻烦大家帮下忙,谢谢
回复
SQLCenter 2010-09-28
你写的这个对的啊,没问题
回复
喜-喜 2010-09-28
虎头蛇尾,不知道是什么!无从下手...
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2010-09-28 11:05
社区公告
暂无公告