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

基于日期列对比两张表的计数差异并排查不匹配项

解决两表日期分组计数不匹配并展示差值的问题

你当前的需求是:两张含日期列的表,按日期分组统计行数,找出计数不匹配的日期并展示差值。先看你的示例数据:

示例数据

表1

DateCount
Apr. 25178048
Apr. 2436273

表2

DateCount
Apr. 25178048
Apr. 2436073

期望结果

DateCount
Apr. 24200

问题分析

你用MINUS+UNION ALL的方式只能筛选出「存在于某一张表但另一张没有的日期」或「日期存在但计数完全不同的行」,但无法直接计算两个表计数的差值,所以得不到期望的结果。

解决方案

可以用FULL JOIN关联两个表的分组统计结果,再计算差值并过滤出不匹配的日期:

SELECT
    COALESCE(t1.date, t2.date) AS Date,
    ABS(COALESCE(t1.cnt, 0) - COALESCE(t2.cnt, 0)) AS Count
FROM
    (SELECT date, COUNT(*) AS cnt FROM table1 GROUP BY date) t1
FULL JOIN
    (SELECT date, COUNT(*) AS cnt FROM table2 GROUP BY date) t2
ON
    t1.date = t2.date
WHERE
    COALESCE(t1.cnt, 0) != COALESCE(t2.cnt, 0)
ORDER BY
    Date DESC;

代码说明

  1. 子查询分组统计:先分别统计两张表中每个日期的行数,得到t1和t2两个临时结果集
  2. FULL JOIN关联:确保无论日期只在表1、只在表2还是两张表都有,都能被检索到
  3. COALESCE处理NULL:如果某日期只在一张表存在,另一张表的计数会被视为0,避免计算时出现NULL
  4. ABS取差值绝对值:如果你需要区分是表1计数多还是少,可以去掉ABS(),直接用t1.cnt - t2.cnt,结果会呈现正负值
  5. WHERE过滤匹配项:只保留计数不相等的日期行

把这段SQL替换你原来的查询,就能得到符合预期的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 11:35:18