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

无关联Demo与Agent表的SSN计数、销售额对比SQL实现求助

两表对比统计需求的SQL实现

核心实现逻辑

由于Demo表与Agent表无直接关联字段,无需做表连接操作,可通过独立聚合计算获取单表的目标统计值,再通过CASE判断逻辑返回要求的0/1标识。
实现时的通用注意细节:

  • 统计SSN计数时,使用COUNT(SSN)而非COUNT(*),排除SSN为NULL的无效记录,匹配常规业务统计口径
  • 计算sales总和时,对空值做兜底转0处理,避免某张表无销售数据时SUM结果为NULL导致对比逻辑失效

基础版查询(适配小数据量表)

单次执行即可同时输出两个场景的判断结果,语法兼容所有主流SQL引擎:

SELECT
  -- 场景1标识:两表SSN计数相等返回0,否则返回1
  CASE
    WHEN (SELECT COUNT(SSN) FROM Demo) = (SELECT COUNT(SSN) FROM Agent) THEN 0
    ELSE 1
  END AS ssn_count_compare_result,
  -- 场景2标识:两表sales总和相等返回0,否则返回1
  CASE
    WHEN (SELECT COALESCE(SUM(sales), 0) FROM Demo) = (SELECT COALESCE(SUM(sales), 0) FROM Agent) THEN 0
    ELSE 1
  END AS sales_sum_compare_result;

优化版查询(适配大表数据场景)

通过CTE预聚合的方式实现单表仅一次全表扫描,大幅降低大表场景下的查询耗时:

WITH demo_stat AS (
  SELECT 
    COUNT(SSN) AS ssn_cnt, 
    COALESCE(SUM(sales),0) AS sales_total 
  FROM Demo
),
agent_stat AS (
  SELECT 
    COUNT(SSN) AS ssn_cnt, 
    COALESCE(SUM(sales),0) AS sales_total 
  FROM Agent
)
SELECT
  CASE WHEN d.ssn_cnt = a.ssn_cnt THEN 0 ELSE 1 END AS ssn_count_compare_result,
  CASE WHEN d.sales_total = a.sales_total THEN 0 ELSE 1 END AS sales_sum_compare_result
FROM demo_stat d CROSS JOIN agent_stat a;

适配微调说明

  • 若使用SQL Server数据库,可将代码中的COALESCE替换为ISNULL,语法完全兼容
  • 若业务规则要求统计去重后的SSN个数,只需将场景逻辑中的COUNT(SSN)替换为COUNT(DISTINCT SSN),即可匹配去重统计的需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 22:45:03