我花了一整天的时间试图弄清楚如何在下面加入/分组我的查询,有人可以帮助我或指导我完成所需的输出吗?-i 附上一些外键值以便于参考)
Below is my Table Grade
rowID testID studentID Grade
1 1 1(class2011) 50
2 1 1(class2011) 90
3 2 1(class2011) 100
4 2 2(class2012) 85
--Student table
StudentID Classyear
1 2(class2011)
2 3(class2012)
3 1(class2010)
--Classyear Table
ClassYearID Desc
1 2010
2 2011
3 2012
我在下面的查询(显示testID,失败(通过率= 80),通过,采取,率)
var h = list.GroupBy(a => a.testID)
.Select(a => {
int _failed = a.Count(g => g.Grade < 80);
int _passed = a.Count(g => g.Grade >= 80);
int _rate = (int)(_passed / (double)a.Count() * 100.0);
return new {
testID = a.Key,
failed = _failed,
passed = _passed,
taken = a.Count(),
rate = _rate,
};
});
The result1
testID failed passed taken Rate
1 1 1 2 50%
2 0 2 2 100%
现在这是我的大问题:我上面表中的学生不属于同一学年。我需要按 testID 和 classyear 对它进行分组。请参阅下面的所需输出:
testID ClassyearID failed passed taken Rate
1 1(2010) 0 0 0 0
1 2(2011) 1 1 2 50%
1 3(2012) 0 0 0 0
2 1(2010) 0 0 0 0
2 2(2011) 0 1 1 100%
2 3(2012) 0 1 1 100%
您可以立即看到与结果 1 的差异。Test2 的统计数据分为 2011 年和 2012 年。
希望我确实解释得足够清楚我的意图。也许我稍后会发布我的糟糕代码,试图获得所需的输出。谢谢