我已經在論壇上搜索了幾個小時的解決方案,但我無法完全找到適合我的問題的解決方案。
我有兩個表:
成員 **************** id name city 1 約翰-波士頓 2 瑪麗亞-波士頓 3 史蒂夫-倫敦 4 奧斯卡-倫敦 5 本-新加坡 捐贈 ******************** 會員_ID金額 1 100 1 150 2 300 3 50 3 100 3 50 4 75 5 200
我試圖創建一個按城市分類的捐款匯總表。因此,我應該得到每個成員的捐款的總和,并按每個城市進行匯總。
所以我的最終結果應該是這樣的:
結果
結果 ************* 波士頓 550 倫敦 275 新加坡 200
這是我的查詢的最新版本:
SELECT me.id, me.city, don.mySUM FROM members me LEFT JOIN (SELECT member_id, SUM(mount) AS mySUM FROM donations GROUP BY member_id) don ON don.member_id=me.id GROUP BY me.city ORDER BY mySUM DESC但是它顯然缺少一些東西,因為它匯總了城市,但只增加了一個用戶的捐款總和。
有人能給我指出正確的方向嗎?
uj5u.com熱心網友回復:
如果沒有一個城市的捐贈資訊,那么捐贈列將顯示為空。要將其轉換為0,你可以使用coalesce(SUM(d.amount),0).
結構圖和插入陳述句:
create table members(id int, name varchar(50), city varchar(50) )。
insert into members values(1, 'John' ,'Boston')。)
insert into members values(2, 'Maria' ,'Boston')。)
insert into members values(3, 'Steve' ,'London')。)
insert into members values(4, 'Oscar' ,'London')。)
insert into members values(5, 'Ben' ,'Singapore')。)
創建 table donations(member_id int, amount int);
insert into donations values(1, 100)。
insert into donations values(1, 150);
insert into donations values(2, 300 ) 。
insert into donations values(3, 50)。
insert into donations values(3,100)。
insert into donations values(3, 50)。
insert into donations values(4, 75)。
insert into donations values(5, 200)。
查詢:
SELECT m.city, SUM(d.account) as donation
FROM members m LEFT JOIN
捐贈 d
ON d.member_id = m.id
GROUP BY m.city
ORDER BY city;
輸出:
| 城市 | total_donations |
|---|---|
| 波士頓 | 550 | 倫敦 | 275新加坡 |
| 新加坡 | 200 |
db<>fiddle here
uj5u.com熱心網友回復:
這是一個join和group by。 你把事情搞得太復雜了:
SELECT m.city, SUM(d.account) as total_donations
FROM members me LEFT JOIN
捐獻d
ON d.member_id = m.id
GROUP BY m.city
ORDER BY total_donations DESC;
uj5u.com熱心網友回復:
下面是你如何實作join。假設你的left join是故意的,當對數字量求和時,我通常使用coalesce來顯示0為nulls,但對于你的目的來說,它是可選的。
select a. city, sum(coalesce(b.amount,0) as total_amount
from members a
left join donations b on a.member_id=b.id
group by a.city
order by total_amount desc;
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/320176.html
標籤:
