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

SQL语句编写:计算UploadDate计数与Destroyed=1计数的差值

修正SQL语句以计算总有效记录数减去Destroyed=1的记录数

原语句存在的问题

  • 表名错误:引用了不存在的表document,实际目标表为Table_A
  • 过滤条件错误:WHERE destroyed=1仅统计该条件下的记录,导致count(uploadDate)无法获取所有非空UploadDate的总记录数
  • 计算逻辑错误:在Destroyed=1的过滤范围内,count(Destroyed)与count(uploadDate)结果一致,差值为0,完全不符合需求

正确的SQL写法

以下几种写法均可实现需求,核心逻辑是先统计所有UploadDate非空的总记录数,再减去Destroyed=1的记录数:

写法1:用SUM+CASE统计Destroyed=1的数量

SELECT 
    COUNT(UploadDate) - SUM(CASE WHEN Destroyed = 1 THEN 1 ELSE 0 END) AS Result
FROM [dbo].[Table_A]

写法2:用COUNT+CASE统计Destroyed=1的数量(利用COUNT忽略NULL的特性)

SELECT 
    COUNT(UploadDate) - COUNT(CASE WHEN Destroyed = 1 THEN 1 END) AS Result
FROM [dbo].[Table_A]

写法3:直接统计等价需求的记录数

如果需求本质是统计UploadDate非空且Destroyed=0的记录数,可直接简化为:

SELECT COUNT(UploadDate) AS Result
FROM [dbo].[Table_A]
WHERE Destroyed = 0

结果验证

针对你提供的5条插入数据(3条Destroyed=1、2条Destroyed=0,且所有UploadDate非空):

  • 总COUNT(UploadDate)为5
  • Destroyed=1的记录数为3
  • 最终计算结果为5-3=2,与直接统计Destroyed=0的记录数一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 15:39:21