有两个表一个是table_order订单表还有一个table_gift赠送礼物表,这两个表里都有字段叫pay_amount和user_id,需求就是我想根据这两个表pay_amount相加的和从大到小排序查询出user_id的结果集合, 就是类似于消费最高的用户排名,这样的SQL该怎么写啊
结合CHATGPT 和其他搜索用SQL子查询 就能实现
sql
SELECT user_id, SUM(pay_amount) AS total_amount
FROM (
SELECT user_id, pay_amount FROM table_order
UNION ALL
SELECT user_id, pay_amount FROM table_gift
) AS combined_table
GROUP BY user_id
ORDER BY total_amount DESC;
order by pay_amount desc
首选业务关系:
查询两张表中每个user_id的总金额
避免两个表数据重复,使用union all联合查询
从联合查询的结果查询并排序
思路可以根据业务逻辑再优化。
优秀