欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

mysql非占位排名_MySQL

程序员文章站 2022-04-16 19:01:36
...
找了好久的mysql排名解决办法,排名结果:1,2,2,3,4,5,5

看sql吧,相信可以看的懂。是从*中找的。

SELECT name,clazz,user_id,class_id,xn,scoreSum,awardedMarks,totalPoint,	CASE	    WHEN @prev_value = totalPoint THEN @rank_count	    WHEN @prev_value := totalPoint THEN @rank_count := @rank_count + 1	END AS rank FROM 	(SELECT au.`NAME` AS NAME,CONCAT(vc.`levelname`,vc.`gradename`,vc.`classname`) AS clazz, cs.user_id,cs.class_id,			cs.`xn`,SUM(cs.`project_score`) AS scoreSum,IFNULL(ca.`marks`,0) awardedMarks, 			(SUM(cs.`project_score`)+IFNULL(ca.`marks`,0)) AS totalPoint		FROM ct_score cs 			LEFT JOIN ct_project cp ON cs.`project_id`=cp.`project_id` 			LEFT JOIN aq_user au ON cs.`user_id`=au.`USER_ID` 			LEFT JOIN vw_xj_e_class vc ON cs.`class_id`=vc.`classid` 			LEFT JOIN `ct_awardedmarks` ca ON ca.`class_id`=cs.`class_id` AND ca.`user_id`=cs.`user_id`			,(SELECT @prev_value := NULL) f,(SELECT @rank_count := 0)  m		WHERE cp.`participant`='Personal' 		GROUP BY cs.`user_id`) t ORDER BY totalPoint DESC;