我有一個這樣的 SQL 表(temp2):

我想計算每只貓的余額*比率/總和(余額)
所以,我想要的輸出是這樣的:

為了得到這個輸出,我使用了以下代碼:
DROP TABLE IF EXISTS temp3;
create table temp3 as select cat, balance * rate /sum(balance) as prod from temp2
group by cat
select temp2.emp_id, temp2.cat,temp2.balance, temp2.rate , temp3.prod from temp2
left outer join temp3 on temp2.cat=temp3.cat
所以在這里我創建了一個新表來獲得答案。會有更簡單的方法來獲得相同的結果嗎?
uj5u.com熱心網友回復:
除非您需要在多個查詢中參考它,否則不需要新表。您可以只加入子查詢。
SELECT t2.emp_id, t2.cat, t2.balance, t2.rate, t3.prod
FROM temp2 AS t2
JOIN (
SELECT cat, balance * rate /sum(balance) AS prod
FROM temp2
GROUP BY cat
) AS t3 ON t2.cat = t3.cat
沒有必要使用LEFT JOIN. 由于子查詢cat來自同一個表,因此不能有任何不匹配的行。
有時創建新表很有用,因此您可以出于性能原因添加索引。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/467185.html
