MYSQL计算值在2个不同列中的次数

时间:2015-03-30 16:06:07

标签: mysql

我有一个包含呼叫详细记录的数据库。我想运行一个查询,它将返回电话号码的总呼叫数。数据库中的每一行代表一个电话呼叫。调用可以是由列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     

然而,我没有回到预期的结果。有没有人对最佳方法有任何建议?

提前致谢。

1 个答案:

答案 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

这假设没有数字可以自行调用,这会导致我在上面给出的解决方案中重复计算。