题目描述:SQL查找积分增加最高的用户的id,名字,以及他的总积分是多少(可能有多个),查询结果按照id升序排序。
步骤一:重新整理一遍grad_info表,把值改为存在负数形式。
步骤二:然后与user表连接,找出最大grade_num。
with new_grade_info as
(
select user_id,
sum((case when type ="add" then grade_num else -1*grade_num end)) as grade_num
from grade_info
group by user_id
)
select u.id,u.name,ngi.grade_num
from user u join new_grade_info ngi
on u.id=ngi.user_id
where ngi.grade_num >= all (select grade_num from new_grade_info)
京公网安备 11010502036488号