You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在单条SQL语句中实现去重号码统计与总消息数统计

问题描述

现有一张消息发送记录表,每日产生百万级记录,表结构及示例数据如下:

CarrierNumbers Sent MessageDate
Airtel12345678902024/9/5
Airtel12345678902024/9/5
Airtel12345678912024/9/5
Airtel12345678912024/9/5
Airtel12345678912024/9/5
Tata12345678922024/9/5
Tata12345678922024/9/5
Jio12345678932024/9/5
Jio12345678932024/9/5
Jio12345678942024/9/5

需要编写SQL语句,统计得到以下格式的结果:

CarrierUnique Number# of Messages
Airtel25
Tata12
Jio23

SQL解决方案

通过分组统计即可实现需求,使用COUNT(DISTINCT)计算唯一号码数,COUNT(*)统计总消息数:

SELECT
    Carrier,
    COUNT(DISTINCT `Numbers Sent Message`) AS `Unique Number`,
    COUNT(*) AS `# of Messages`
FROM
    your_table_name  -- 替换为实际表名
WHERE
    Date = '2024-09-05'  -- 可选:按日期过滤,需匹配表中日期格式
GROUP BY
    Carrier
ORDER BY
    Carrier;

百万级数据性能优化建议

  • 为Carrier和Date建立联合索引,提升分组与过滤效率:
    CREATE INDEX idx_carrier_date ON your_table_name(Carrier, Date);
    
  • 若Numbers Sent Message为字符串类型,可考虑转换为数值类型,或为该字段单独建立索引,优化COUNT(DISTINCT)的执行速度。

内容的提问来源于stack exchange,提问作者Ramakrishna Kulkarni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 19:51:03