所以我有用戶,通話,短信表,現在我想呼入和呼出電話的數量和每個用戶短信
我有這個疑問
select u.username,
sum(case when c.type = 'incoming' then 1 else 0 end) as incoming,
sum(case when c.type = 'incoming' and status = 'true' then 1 else 0 end) as answered,
sum(case when c.type = 'outgoing' then 1 else 0 end) as outgoing,
sum(case when s.type = 'in' then 1 else 0 end) as sms
from user u
join
calls c
on u.id = c.user_id
join
sms s
on u.id = s.user_id
group by u.username;
,其結果是這
傳入和在呼叫傳出的是正確的,但在SMS中的結果是錯誤的用戶樣品中,它應爲1列SMS而不是4
簡化查詢到deb ug,刪除組並且總結並且看結果是否是正確的。我相信'join'存在一個問題,它會產生更多'sms'。 –
我不能刪除總和,因爲我需要在呼叫中傳入和傳出的計數,當我通過它刪除組時,會給我一行樣本用戶 –
其中[DBMS](https://en.wikipedia.org/wiki/DBMS)你在用嗎? –