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

标签 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     

但是我没有得到预期的结果。有人对实现此目标的最佳方法有任何建议吗?

提前致谢。

最佳答案

您可以为每种类型的调用执行两个查询的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/

相关文章:

mysql - 尝试将 DateTimePicker 中的值插入数据库,但导致日期时间格式无效

mysql - 如何将图像从 Drupal 字段加载到 UIImageView?

java - 我的选择查询在使用 MySql 数据库的 Spring MVC 3 中不起作用

mysql - 根据时间间隔查询获取计数值

mysql - 是否可以自动添加默认值?

mysql - 将 XML 数据存储在 MySQL 数据库中的最佳方式,具有一些特定要求

php - 搜索了MySQL数据库,现在我想替换电子邮件字段

php - 将数据导出到 CSV 时处理一对多关系

MySQL date_add REPEAT 循环错误

mysql - 在mysql中添加两个值