mysql会员求积分_MySql-统计所有会员的最高前10次的积分和

用户需求:

会员的排名是按照最高积分的前10次积分的和进行排序的。

实际现状:

目前会员的总积分规则为最近1年内的积分之和;

积分细节表A,存在字段人员ID(PersonalMember_ID)和积分(CompetitionScore_Point)

计划实现:

对表A的PersonalMember、CompetitionScore_Point进行分组查询并去最高积分的前10

实现方法:

---- 这段sql会产生冗余数据,例如甲的前10积分有两个80分,则查询数据会出现11条数据

select s.PersonalMember_ID, sum(s.CompetitionScore_Point)

from A s

where 10>(select count(*) from At

where t.PersonalMember_ID=s.PersonalMember_ID and t.CompetitionScore_Point>s.CompetitionScore_Point)

group by PersonalMember_ID

order by s.PersonalMember_ID, s.CompetitionScore_Point desc;

--- 正确写法如下:

select a.PersonalMember_ID, a.CompetitionScore_Point

from A a left join A b

on a.PersonalMember_ID=b.PersonalMember_ID and a.CompetitionScore_Point>b.CompetitionScore_Point

group by a.CompetitionScore_ID,a.PersonalMember_ID, a.CompetitionScore_Point

having count(b.CompetitionScore_ID)<10

order by a.PersonalMember_ID, a.CompetitionScore_Point desc;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值