刚才的问题(http://topic.csdn.net/u/20071018/14/e713a82e-1b2d-4043-a87d-691f04ad1bde.html)没说清楚重新叙述:
有一个文章表,里面有字段:文章ID、作者、得票数。一个作者可以发多篇文章,但得票数只按每篇文章计算。
现在要统计得票最高的前100作者。例如,a作者发了一篇文章得票数列1名,b发了俩文章列4,5名,c发了仨文章列2,3,6,那作者顺序应该是a,c,b不知道这次说清没有,再次感谢回答~~~
也可以向刚才的问题返回答案,我将把分数一并送上。
有一个文章表,里面有字段:文章ID、作者、得票数。一个作者可以发多篇文章,但得票数只按每篇文章计算。
现在要统计得票最高的前100作者。例如,a作者发了一篇文章得票数列1名,b发了俩文章列4,5名,c发了仨文章列2,3,6,那作者顺序应该是a,c,b不知道这次说清没有,再次感谢回答~~~
也可以向刚才的问题返回答案,我将把分数一并送上。
(
select 作者,sum(得票数) 得票总数 from tb group by 作者
) t
order 得票总数 desc
(
select 作者,sum(得票数) 得票总数 from tb group by 作者
) t
order by 得票总数 desc
1 a 88
2 c 87
3 c 83
4 b 82
5 b 81
6 b 80
7 d 77
8 e 75
9 f 70
10 g 69如果是前5名作者的话,应该列出a,c,b,d,e
SELECT TOP100 作者, MAX(得票) FROM 表 GROUP BY 作者 order by 得票
刚才有一点笔误 更正一下
SELECT TOP 100 作者, MAX(得票) FROM 表 GROUP BY 作者 order by 得票
1 a 88
2 c 87
3 c 83
4 b 82
5 b 81
6 b 80
7 d 77
8 e 75
9 f 70
10 g 69 如果是前5名作者的话,应该列出a,c,b,d,e
---------------------------------
c总共才170票,b有243票。而c却排在b的前面
看楼主的意思是对作者的平均得票进行排序吗?
如果是的话。可以这样:
create table wz(文章id int,作者 varchar(50),得票 int)
insert into wz select 1,'a', 88
insert into wz select 2 , 'c', 87
insert into wz select 3 , 'c', 83
insert into wz select 4 , 'b', 82
insert into wz select 5 , 'b', 81
insert into wz select 6 , 'b', 80
insert into wz select 7 , 'd', 77
insert into wz select 8 , 'e', 75
insert into wz select 9 , 'f', 70
insert into wz select 10 , 'g', 69 select top 5 作者 from (select 作者,sum(得票)*1.0/count(1) [平均票数] from wz group by 作者)a