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

如何正确统计表格中每个日期对应的城市数量?

问题分析与解决办法

你的需求是统计每个日期对应的不同城市数量,但现有SQL得到异常结果,核心问题出在数据格式和处理逻辑上:

数据脏污导致统计失效

从你给出的样例数据能看到,City列格式明显不统一:

  • 城市名后带冒号(比如Paris:)
  • 冒号前后夹杂多余空格(比如Lyon :)

这种情况下,就算用count(distinct city),数据库也会把Lyon :和Lyon:判定为不同城市;如果表中存在大量重复脏数据行,count(*)自然会跑出远超预期的数值。

修正后的SQL写法

先清洗City列格式,再做统计:

1. 基础清洗统计

直接在统计时清理城市名的冒号和前后空格:

SELECT 
    Date,
    COUNT(DISTINCT TRIM(REPLACE(City, ':', ''))) AS city_count
FROM your_table
GROUP BY Date
ORDER BY Date;

2. 处理日期含时间的情况

如果你的Date列实际是datetime类型(包含时分秒,导致同一日期被拆分成多个不同值),需要先提取纯日期部分:

SELECT 
    DATE(Date) AS pure_date,
    COUNT(DISTINCT TRIM(REPLACE(City, ':', ''))) AS city_count
FROM your_table
GROUP BY DATE(Date)
ORDER BY pure_date;

额外排查项

如果结果仍异常,检查两点:

  • 表中是否有大量重复行(同一日期同一城市多次出现),count(distinct ...)会自动去重,确保统计的是城市数量而非行数
  • 确认City列无其他隐藏格式问题(比如大小写差异、特殊字符),可以单独执行SELECT DISTINCT TRIM(REPLACE(City, ':', '')) FROM your_table查看清洗后的城市列表,确认是否有重复项

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 13:02:41