sum嵌套if/iif/case...when计算总积分,需要多次嵌套复用子查询时,可以创建临时表,提高执行效率和代码可读性,代码如下:
with gs AS
(select
u.id, u.name, sum(case when gi.type='add' then gi.grade_num else -gi.grade_num end) grade_sum
from user u , grade_info gi
where u.id = gi.user_id
group by 1,2
)
select * from gs
where grade_sum = (select max(grade_sum) from gs)
order by id ;
京公网安备 11010502036488号