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

如何按Complex ID统计CONNECT和DISCO数量?SQL统计错误求助

解决方法

你的SQL问题出在窗口函数没有针对NATURE_OF_CHANGE_CD的类型做区分统计,而且重复使用了别名C1,以下是两种正确的实现方式:

方法一:条件聚合(GROUP BY)

适合只需要按分组统计次数的场景,直接对符合条件的记录计数:

SELECT
  COMPLEX_ID,
  PAYROLL_DATE,
  STRATEGIC_PRODUCT,
  SUM(CASE WHEN NATURE_OF_CHANGE_CD = 'CONNECT' THEN 1 ELSE 0 END) AS CONNECT_COUNT,
  SUM(CASE WHEN NATURE_OF_CHANGE_CD = 'DISCO' THEN 1 ELSE 0 END) AS DISCO_COUNT
FROM 你的表名 A
GROUP BY COMPLEX_ID, PAYROLL_DATE, STRATEGIC_PRODUCT

方法二:窗口函数(保留每条记录)

如果需要保留原始表的每条记录,同时显示对应COMPLEX_ID的统计次数,用带条件的窗口COUNT:

SELECT
  A.COMPLEX_ID,
  A.PAYROLL_DATE,
  A.STRATEGIC_PRODUCT,
  COUNT(CASE WHEN A.NATURE_OF_CHANGE_CD = 'CONNECT' THEN 1 END) OVER (PARTITION BY A.COMPLEX_ID) AS CONNECT_COUNT,
  COUNT(CASE WHEN A.NATURE_OF_CHANGE_CD = 'DISCO' THEN 1 END) OVER (PARTITION BY A.COMPLEX_ID) AS DISCO_COUNT
FROM 你的表名 A

原SQL的问题说明

  1. 窗口函数COUNT(A.COMPLEX_ID) OVER (PARTITION BY COMPLEX_ID)统计的是该COMPLEX_ID下的所有记录总数,没有区分CONNECT/DISCO类型,所以结果错误。
  2. 两个统计列都用了C1作为别名,属于重复别名,会导致语法错误或结果混乱。
  3. 无意义的DISTINCT会干扰统计逻辑,统计应该基于原始数据,不需要提前去重。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 15:20:48