SQL Server下按答案组合分组统计共同回答用户数的SQL实现
实现思路
你的表是典型的行式存储问卷结构,每个用户的单条问题回答独占一行,要统计两个问题的答案组合用户数,用自连接关联同一用户的两条回答记录再分组统计即可。
可用SQL查询语句
默认假设两个问题的ID分别为:家庭总薪资问题QuestionId为1、兄弟数量问题QuestionId为2,你可以替换为实际表中对应ID。
SELECT t1.QuestionId AS Question1Id, t2.QuestionId AS Question2Id, t1.Answer AS Answer1, t2.Answer AS Answer2, COUNT(DISTINCT t1.userId) AS [count] FROM 替换为你的实际表名 t1 INNER JOIN 替换为你的实际表名 t2 ON t1.userId = t2.userId WHERE t1.QuestionId = 1 AND t2.QuestionId = 2 GROUP BY t1.QuestionId, t2.QuestionId, t1.Answer, t2.Answer
补充说明
- 用
INNER JOIN保证只统计同时回答了两个问题的用户,如果需要统计仅回答单个问题的用户,可改为FULL OUTER JOIN - 用
COUNT(DISTINCT t1.userId)避免同一个用户的重复回答记录被多次统计 [count]加方括号是因为COUNT是SQL Server的保留字,避免触发语法报错- 如果不清楚两个问题对应的QuestionId,也可以把WHERE条件替换为
t1.Question = '你家的总薪资是多少?' AND t2.Question = '你有几个兄弟?'
内容的提问来源于stack exchange,提问作者Mustafa
相关产品推荐
相关产品推荐

