高分求个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中最多的标题

希望高手能帮下,在线等,麻烦大家!
...全文
112 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
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
「已注销」 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
  • 打赏
  • 举报
回复
虎头蛇尾,不知道是什么!无从下手...

22,302

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧