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

如何统计问题7和9均回答Yes的有效问卷数量?

统计同时满足问题7和9均回答“Yes”的问卷数量

现有代码仅能单独统计问题7、9回答“Yes”的问卷数,无法实现同一问卷中两个问题均选“Yes”的统计,现有代码如下:

SELECT
count(if(question.id = '7' and value = 'Yes',1,null)) as A,
count(if(question.id = '9' and value = 'Yes',1,null)) as B
FROM questions

数据结构说明

Survey表(存储问卷ID),questions表结构示例:

问题(Question.id)答案(value=Yes/No/Null)
1No
2Yes
3
4No
5Yes
6No
7Yes
8
9Yes

解决方案

核心思路是按问卷分组,判断每个问卷是否同时满足两个问题均为“Yes”的条件,以下提供两种可行方法:

方法一:分组条件聚合

SELECT COUNT(*) AS total
FROM (
    SELECT survey.id
    FROM questions
    JOIN survey ON questions.survey_id = survey.id -- 需确保questions表有与Survey关联的survey_id字段
    WHERE question.id IN ('7', '9') AND value = 'Yes'
    GROUP BY survey.id
    HAVING COUNT(DISTINCT question.id) = 2
) AS valid_surveys;

逻辑:筛选出问题7/9且回答为“Yes”的记录,按问卷分组后,仅保留同时包含两个问题的分组,最后统计符合条件的问卷总数。

方法二:表自连接匹配

SELECT COUNT(DISTINCT survey.id) AS total
FROM questions q7
JOIN questions q9 ON q7.survey_id = q9.survey_id
JOIN survey ON q7.survey_id = survey.id
WHERE q7.question.id = '7' AND q7.value = 'Yes'
  AND q9.question.id = '9' AND q9.value = 'Yes';

逻辑:将questions表自连接,分别匹配问题7和9均为“Yes”的记录,关联到同一问卷后去重统计数量。

注意事项

  • 需确认questions表存在与Survey表关联的字段(如survey_id),否则无法按问卷维度统计。
  • 两种方法都会自动排除仅回答了其中一个问题的问卷,仅统计两个问题均回答“Yes”的有效问卷。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 19:36:18