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

如何统计num_zaprosa/num_otveta时纳入全量数据且过滤单NULL结果

问题解决

需求:统计num_zaprosa和num_otveta的计数时纳入所有记录,但结果集中不显示任一字段为NULL的记录。

你的原代码核心问题是按num_zaprosa和num_otveta联合分组,这会把22|null和22|9999拆成两个独立分组,无法合并统计同一num_zaprosa的总记录数。

正确SQL实现

WITH zaprosa_total AS (
    -- 先计算每个num_zaprosa的总记录数(包含所有关联记录,不管num_otveta是否为NULL)
    SELECT num_zaprosa, COUNT(*) AS count_num_zaprosa
    FROM your_table
    GROUP BY num_zaprosa
)
SELECT 
    t.num_zaprosa,
    t.num_otveta,
    z.count_num_zaprosa,
    COUNT(*) AS count_num_otveta  -- 当前num_zaprosa+num_otveta组合下的非NULL记录数
FROM your_table t
JOIN zaprosa_total z ON t.num_zaprosa = z.num_zaprosa
WHERE t.num_otveta IS NOT NULL  -- 过滤掉num_otveta为NULL的记录,确保结果集无NULL
GROUP BY t.num_zaprosa, t.num_otveta, z.count_num_zaprosa;

结果验证

基于你的初始数据,执行上述SQL会得到如下结果:

num_zaprosanum_otvetacount_num_zaprosacount_num_otveta
234420022
22999921
155611

完全匹配你的期望:

  • num_zaprosa=22的总计数包含了22|null这条记录,但结果集只展示22|9999
  • 所有结果行的num_zaprosa和num_otveta均不为NULL

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 15:22:11