mysql 中如何获取分类平均值的名次? 比如10个班级的平均分,按照班级名称排序,后面跟着名次。
selectclass,avg(score)fromchengjigroupbyclassorderbyclass怎么获取这个班级的平均分排名,不是php循环显示的序号...
select class ,avg(score) from chengji group by class order by class
怎么获取这个班级的平均分排名,不是php 循环显示的序号 展开
怎么获取这个班级的平均分排名,不是php 循环显示的序号 展开
2个回答
展开全部
建议你用程序来完成。这个涉及计算列排序,排序的多重方式,各个数据库估计写法都不同。
---
如果你硬要用sql完成可以用如下方式:
记住只在mysql里能这么写。幸好你的是mysql
---------
SELECT M.class,M.AvgS,M.pm
FROM
(
SELECT A.*,@rank:=@rank+1 as pm
FROM
(
SELECT class,avg(score) as AvgS FROM test.chengji GROUP BY class ORDER BY AvgS DESC
) A ,(SELECT @rank:=0) B
) M
ORDER BY M.class
--------
pm 代表排名
---
结果类似:
class AvgS pm
-----------------------
'1', '47.0000', '1'
'2', '12.0000', '3'
'5', '38.5000', '2'
------------------------
---
如果你硬要用sql完成可以用如下方式:
记住只在mysql里能这么写。幸好你的是mysql
---------
SELECT M.class,M.AvgS,M.pm
FROM
(
SELECT A.*,@rank:=@rank+1 as pm
FROM
(
SELECT class,avg(score) as AvgS FROM test.chengji GROUP BY class ORDER BY AvgS DESC
) A ,(SELECT @rank:=0) B
) M
ORDER BY M.class
--------
pm 代表排名
---
结果类似:
class AvgS pm
-----------------------
'1', '47.0000', '1'
'2', '12.0000', '3'
'5', '38.5000', '2'
------------------------
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询