我有一个包含呼叫详细记录的数据库。我想运行一个查询,它将返回电话号码的总呼叫数。数据库中的每一行代表一个电话呼叫。调用可以是由列callingPartyNumber
表示的数字放置的调用,也可以是放置在列finalCalledPartyNumber
表示的数字的调用。
例如,假设电话号码5555551212拨打3个电话并接听2个电话。查询结果应返回电话号码和总呼叫数(5555551212,5)
我根据我在stackoverflow上发现的其他问题尝试了一些不同的查询,包括:
SELECT callingPartyNumber, COUNT(*) as count FROM CDR
GROUP BY finalCalledPartyNumber HAVING COUNT(*) > 1
和
SELECT id, callingPartyNumber, finalCalledPartyNumber, count(*) AS count
FROM CDR
GROUP BY callingPartyNumber, finalCalledPartyNumber
然而,我没有回到预期的结果。有没有人对最佳方法有任何建议?
提前致谢。
答案 0 :(得分:2)
您可以针对每种类型的通话执行UNION
两个查询,然后通过电话号码GROUP BY
临时结果:
SELECT All_Numbers.number, SUM(count) AS total_count
FROM (
SELECT callingPartyNumber AS number, COUNT(*) AS count
FROM CDR
GROUP BY callingPartyNumber
UNION
SELECT finalCalledPartyNumber AS number, COUNT(*) AS count
FROM CDR
GROUP BY finalCalledPartyNumber
) AS All_Numbers
GROUP BY All_Numbers.number
这假设没有数字可以自行调用,这会导致我在上面给出的解决方案中重复计算。