有兩個(gè)表一個(gè)是table_order訂單表還有一個(gè)table_gift贈(zèng)送禮物表,這兩個(gè)表里都有字段叫pay_amount和user_id,需求就是我想根據(jù)這兩個(gè)表pay_amount相加的和從大到小排序查詢出user_id的結(jié)果集合, 就是類似于消費(fèi)最高的用戶排名,這樣的SQL該怎么寫啊
結(jié)合CHATGPT 和其他搜索用SQL子查詢 就能實(shí)現(xiàn)
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;
首選業(yè)務(wù)關(guān)系:
如果兩個(gè)表user_id不是對(duì)應(yīng)關(guān)系,或者說table_gift表中的user_id可能沒有在table_order表中出現(xiàn)。
查詢兩張表中每個(gè)user_id的總金額
select user_id, sum(pay_amount) as a from TABLE group by user_id;
避免兩個(gè)表數(shù)據(jù)重復(fù),使用union all聯(lián)合查詢
select user_id, sum(pay_amount) as a from TABLE1 group by user_id union all select user_id, sum(pay_amount) as a from TABLE2 group by user_id;
從聯(lián)合查詢的結(jié)果查詢并排序
select user_id, sum(a) as sum_price from (上面的聯(lián)合查詢語句) group by user_id order by sum_price desc;
思路可以根據(jù)業(yè)務(wù)邏輯再優(yōu)化。