题目描述: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)