patternsqlMinor
Sum of points and rank according to points
Viewed 0 times
rankpointssumandaccording
Problem
I am creating a game where I am calculating the user points on the basis of user activities. Everything is working fine - I got the sum of points and on the basis of points I calculated the rank. I have two columns for points calculation:
Everything is fine, but the problem comes when I have to rank the users with same points. In this case, I have to consider the registration date: who registers first will come up first on the ranking. The registration date is in another table
Can anyone help please?
pointsup (contains up points) and pointsdown (contains down points)select sum(pointsup - pointsdown) as points
from table1 t1
join table2 t2
on t2.Id = t1.id
where t1.ActivityTime BETWEEN '2015-01-01' AND '2016-01-01'
group by t1.id
order by points descEverything is fine, but the problem comes when I have to rank the users with same points. In this case, I have to consider the registration date: who registers first will come up first on the ranking. The registration date is in another table
table3. I have tried to join this third table but the sum is behaving oddly, showing wrong sum calculation.Can anyone help please?
Solution
Try this query
select a.*,b.points from table3 a
join(
select Sum(PointsUp-PointsDown) as points,t1.id
from table1 t1
join table2 t2 on t2.Id = t1.id
where t1.ActivityTime BETWEEN '2015-01-01' AND '2016-01-01'
Group By t1.Id)b on a.id=b.id
order by b.points descCode Snippets
select a.*,b.points from table3 a
join(
select Sum(PointsUp-PointsDown) as points,t1.id
from table1 t1
join table2 t2 on t2.Id = t1.id
where t1.ActivityTime BETWEEN '2015-01-01' AND '2016-01-01'
Group By t1.Id)b on a.id=b.id
order by b.points descContext
StackExchange Database Administrators Q#105766, answer score: 4
Revisions (0)
No revisions yet.