如何用DAX公式统计通过全部10门课程的唯一学生数量
解决方案
你需要先按学生维度聚合统计每人通过的课程数量,再和要求的10门课做匹配,可用以下公式实现:
PassedAll = // 先定义需要通过的总课程数,如果是固定10门也可以直接写为10 VAR TotalRequiredCourses = DISTINCTCOUNT(Progress[Course]) // 统计每个学生通过的不同课程数量 VAR StudentPassedStats = ADDCOLUMNS( VALUES(Progress[Student]), "PassedCourseCount", CALCULATE( DISTINCTCOUNT(Progress[Course]), Progress[Mark] = "passed" // 如果仅统计指定10门课,可取消下一行注释,把示例课程名替换成你的实际课程 // , Progress[Course] IN {"Course1","Course2","Course3","Course4","Course5","Course6","Course7","Course8","Course9","Course10"} ) ) RETURN // 筛选出通过课程数等于总要求数的学生,统计数量 COUNTROWS(FILTER(StudentPassedStats, [PassedCourseCount] = TotalRequiredCourses))
逻辑说明
- 你之前的写法错误原因是对数据表单行做筛选,而单行数据只能对应一门课程,不可能同时满足多门课程的匹配条件,因此没有符合条件的结果
- 上面的公式先基于学生维度聚合,计算每个学生通过的课程总数,再匹配总要求的课程数,符合「全部课程都通过」的统计逻辑
- 如果你的在售课程有单独的维护表,可把
TotalRequiredCourses的取值替换为在售课程表的课程去重计数,避免下架课程、非在售课程影响统计结果
内容的提问来源于stack exchange,提问作者drLecter
相关产品推荐
相关产品推荐

