MS sqlserver 查询问题,请教高手!

waydalee 2012-06-04 04:05:45
SELECT distinct(a.bm_id),COUNT(DISTINCT(user_id)) as usercount,bm_count,
((COUNT(DISTINCT(user_id)))*10000/bm_count) as per
FROM DoInfo AS p INNER JOIN BmInfo AS a ON a.bm_id=p.bm_id group by
a.bm_id ,a.bm_temp ,bm_count,user_id having a.bm_temp= 1 and user_id>0 order by per desc
查询语句是这样子的,也就是查询参与人数的百分比!这样查询出来的是所有的,我想知道怎么能够查询到前3条呢?
前面加top 3 会和 distinct有冲突!至于这个usr_id>0是因为我在表里面插入了一组空数据(为了页面显示)!
...全文
120 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
PitTroll 2012-06-04
  • 打赏
  • 举报
回复
写个嵌套查询。
anzhiqiang_touzi 2012-06-04
  • 打赏
  • 举报
回复


select top 3 * from
(
SELECT distinct(a.bm_id),COUNT(DISTINCT(user_id)) as usercount,bm_count,
((COUNT(DISTINCT(user_id)))*10000/bm_count) as per
FROM DoInfo AS p INNER JOIN BmInfo AS a ON a.bm_id=p.bm_id group by
a.bm_id ,a.bm_temp ,bm_count,user_id having a.bm_temp= 1 and user_id>0
) as t order by t.per desc;

bdmh 2012-06-04
  • 打赏
  • 举报
回复
嵌套
select top 3 field1,field2 from (select......)
EnForGrass 2012-06-04
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
SELECT distinct(a.bm_id),COUNT(DISTINCT(user_id)) as usercount,bm_count,
((COUNT(DISTINCT(user_id)))*10000/bm_count) as per
FROM DoInfo AS p INNER JOIN BmInfo AS a ON a.bm_id=p.bm_id group by
……
[/Quote]
可以用Row_Number函数先编号
再用between。。。and 。。。。。
zhangcanqun 2012-06-04
  • 打赏
  • 举报
回复
select top 3 * from
(
SELECT distinct(a.bm_id),COUNT(DISTINCT(user_id)) as usercount,bm_count,
((COUNT(DISTINCT(user_id)))*10000/bm_count) as per
FROM DoInfo AS p INNER JOIN BmInfo AS a ON a.bm_id=p.bm_id group by
a.bm_id ,a.bm_temp ,bm_count,user_id having a.bm_temp= 1 and user_id>0
) as t order by t.per desc;
这样呢
  • 打赏
  • 举报
回复
distinct在这里貌似没有任何的作用,既然如此,还不如去掉

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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