表格的查询和统计运算

表格的查询和统计运算

一. 数据查询

1.要求:查出最高的成绩信息

语句描述:Linq使用group
by分组按UserID用户ID查询出用户最高的成绩信息,分组语法:group tbAchievement
by tbAchievement.UserID into tbStudent,表示tbAchievement按UserID字段进行分组,其结果命名为tbStudent。

通过降序方法获取第一个值,这个值就是我们需要的最大值。

var listAchievement = from tbAchievement in
myModels.PW_Achievement

                    
group tbAchievement by tbAchievement.UserID into tbStudent

select new {

UserID = tbStudent.Key,//key属性:返回进行分组的关键字段的值

AchievementID = tbStudent.OrderByDescending(m =>
m.Achievement).FirstOrDefault().AchievementID,

                      Achievement =
tbStudent.OrderByDescending(m =>
m.Achievement).FirstOrDefault().Achievement,

                      ExamNumber =
tbStudent.OrderByDescending(m => m.ExamNumber).FirstOrDefault().ExamNumber,

                      EligibleTypeID =
tbStudent.OrderByDescending(m =>
m.Achievement).FirstOrDefault().EligibleTypeID

                                  };

2.运用多表联查方法查询出最优成绩,最多的考试次数,学号等信息放入new出来的新的实体类AchievementVo里
在这里插入图片描述

二.数据的筛选

1.首先实例化,AchievementStatisticsVo里是我们要计算的总人数,平均值,各分数段的比例&人数等字段。

AchievementStatisticsVo
listStatistics = new AchievementStatisticsVo();

2.运用三目运算计算总人数

int totalRow = listResult.Count()==0?1:listResult.Count();

listStatistics.TotalNumber= totalRow;

3.计算所有学生成绩总和

float sumAchievement =(float)listResult.Sum(m=> m.Achievement);

3.计算平均分(总成绩/总人数)

listStatistics.AverageScore= sumAchievement / totalRow;

4.计算合格人数和合格比例(合格人数/总人数)

listStatistics.PassNumber= listResult.Count(m => m.Achievement >= 60);

listStatistics.PassNumberP= (float)listStatistics.PassNumber / totalRow * 100;

5.计算不合格人数和不合格比例

listStatistics.PassFail= listResult.Count(m => m.Achievement < 60);

listStatistics.PassFailP= (float)listStatistics.PassFail / totalRow * 100;

6.计算100人数和比例

listStatistics.Score100= listResult.Count(m => m.Achievement == 100);

listStatistics.Score100P= (float)listStatistics.Score100 / totalRow * 100;

7.计算90`99人数和比例

listStatistics.Score9099= listResult.Count(m => m.Achievement >= 90 && m.Achievement <100);

listStatistics.Score9099P= (float)listStatistics.Score9099 / totalRow * 100;
  1. 计算80`89人数和比例

listStatistics.Score8089=

listResult.Count(m => m.Achievement >= 80 && m.Achievement <90);

listStatistics.Score8089P= (float)listStatistics.Score8089 / totalRow * 100;

以次往下推,最后返回listStatistics数据去页面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值