DAX查询需求:统计同时选修指定学科组合的唯一学生数
DAX统计同时选修特定学科组合的唯一学生数
核心思路
先排除同一学生同一学科的重复记录,再筛选出同时覆盖所有目标学科的学生,最后统计这类学生的数量。
方法一:分步逻辑清晰版
同时选修指定学科的学生数 = VAR TargetSubjects = {"English", "Maths"} // 自定义目标学科组合 VAR 学生-学科去重表 = SUMMARIZE( '考试成绩表', // 替换为你的数据表名 '考试成绩表'[学生ID], // 替换为学生唯一标识列(如ID/唯一姓名) "已修学科", DISTINCT('考试成绩表'[学科]) ) VAR 符合条件的学生 = FILTER( 学生-学科去重表, // 判断学生已修学科是否包含所有目标学科 COUNTROWS(INTERSECT([已修学科], TargetSubjects)) = COUNTROWS(TargetSubjects) ) RETURN COUNTROWS(符合条件的学生)
方法二:简洁写法
同时选修指定学科的学生数 = VAR 目标学科数量 = 2 // 对应目标学科的总数,如3门则改为3 RETURN COUNTROWS( FILTER( VALUES('考试成绩表'[学生ID]), // 计算该学生在目标学科中的distinct学科数,等于目标数量即符合条件 CALCULATE( DISTINCTCOUNT('考试成绩表'[学科]), '考试成绩表'[学科] IN {"English", "Maths"} ) = 目标学科数量 ) )
注意事项
- 务必替换代码中的
'考试成绩表'为你实际的数据表名称 - 确保
[学生ID]是唯一标识学生的列(若用姓名,需保证无重名) - 如需统计更多学科,只需修改
TargetSubjects数组(方法一)或同时调整目标学科数量与IN中的学科列表(方法二)
内容的提问来源于stack exchange,提问作者Jamie Wheeldon
相关产品推荐
相关产品推荐

