WITH total AS( SELECT order_tb.*, uservip_tb.vip FROM order_tb LEFT JOIN uservip_tb ON order_tb.user_id=uservip_tb.user_id ), points AS( SELECT vip,sum(order_price) AS order_total FROM total GROUP BY vip ORDER BY sum(order_price) DESC ), vvip AS( SELECT distinct vip FROM uservip_tb ) SELECT vvip.vip, coalesce(points.order_total,0) AS order_total FROM vvip LEFT JOIN points ON vvip.vip=points.vip ORDER BY coalesce(points.order_total,0) DESC;
为了提取用户完整的vip信息而构造vvip表