mysql非占位排名

找了好久的mysql排名解决办法,排名结果:1,2,2,3,4,5,5

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

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;



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值