【问题标题】:Relational algebra, finding how many a number is called关系代数,找出有多少个数被调用
【发布时间】:2014-03-27 10:54:57
【问题描述】:
我有一张如下表
callingNumber | calledNumber
-----------------------------
n1 | n2
n2 | n6
n9 | n3
n1 | n2
n2 | n1
我想知道如何得到这样的结果
callingNumber | calledTimes
----------------------------
n1 | 1
n2 | 2
n9 | 0
所以结果将只显示主叫号码(谁发起呼叫)以及他们被叫了多少次(它们出现在“被叫号码”字段中),
【问题讨论】:
标签:
sql
relational-algebra
【解决方案1】:
Select calledNumber,COALESCE(calledTimes,0)
FROM (
SELECT calledNumber,Count(*) as calledTimes
FROM TableName
GROUP BY calledNumber
)Z
RIGHT JOIN TableName t
ON t.callingNumber=z.calledNumber
【解决方案2】:
您需要从所有想要的数字列表开始,然后加入要汇总的数字:
select cn.callingNumber, count(t.calledNumber) as cnt
from (select distinct callingNumber from table t) cn left outer join
table t
on cn.callingNumber = t.calledNumber
group by cn.callingNumber;