我有一个包含调用详细记录的数据库。我想运行一个查询,该查询将按电话号码返回调用总数。数据库中的每一行代表一个电话。调用可以是由 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
但是我没有得到预期的结果。有人对实现此目标的最佳方法有任何建议吗?
提前致谢。
最佳答案
您可以为每种类型的调用执行两个查询的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
这假设没有数字可以调用自己,这将导致我在上面给出的解决方案中重复计算。
关于MYSQL 计算值在 2 个不同列中的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29350972/