select u.vip,ifnull(sum(o.order_price),0) as order_total
from order_tb o right join uservip_tb u on o.user_id=u.user_id
group by u.vip 
order by sum(o.order_price) desc

这道题没啥难的,主要是注:如果存在某一会员等级的用户没有下订单也需要输出该会员等级,订单总额记录为0, 需要用到ifnull函数。

其余就是right join了, 如果表链接反过来也可以let join。使用了 RIGHT JOIN 确保所有会员等级都被包含

这里排序那里可以使用order_total 别名。

sql

IFNULL(表达式, 替换值)

作用:

  • 如果表达式为NULL,返回替换值
  • 如果表达式不为NULL,返回表达式本身的值