如何用mysql来统计各个分段的人数,给个方法,大佬们

toward_south 2018-02-28 05:34:38
		//遍历表
try{
String sql="SELECT * FROM student1";
pstmt=(PreparedStatement) con.prepareStatement(sql);
ResultSet rs=pstmt.executeQuery();
while(rs.next()){
count++;
}
//执行查询
rs=pstmt.executeQuery();
Object[][]info=new Object[count][5];
Object[][]info2=new Object[count][6];
float[]flo=new float[count];
//如果不设置为0,数组越界
count=0;

while(rs.next()){
info[count][0]=rs.getString("iNum");
info[count][1]=rs.getString("iName");
info[count][2]=Float.parseFloat(rs.getString("iChinese"));
info[count][3]=Float.parseFloat(rs.getString("iMaths"));
info[count][4]=Float.parseFloat(rs.getString("iEnglish"));
flo[count]=(float)info[count][2]+(float)info[count][3]+(float)info[count][4];
info2[count][0]=info[count][0];
info2[count][1]=info[count][1];
info2[count][2]=info[count][2];
info2[count][3]=info[count][3];
info2[count][4]=info[count][4];
info2[count][5]=flo[count];
count++;
}

//优等生统计
for(int i=0;i<count;i++){
if(((flo[i]/3)>=80)||(float)info[i][2]>=90||(float)info[i][3]>=90||(float)info[i][4]>=90){
Topnum++;
}
}

//分段人数统计
ChineseNum=new int[10];
MathsNum=new int[10];
ArtNum=new int[10];
Num=new Object[3][11];
Num[0][0]="数学";
Num[1][0]="语文";
Num[2][0]="艺术";

//赋值为0
for(int i=0;i<3;i++){
for(int j=1;j<11;j++){
Num[i][j]=0;
}
}
//****求各分段人数*********
for(int i=0;i<count;i++){
if((float)info[i][2]<=10){
MathsNum[0]++;
Num[0][1]=MathsNum[0];
}
else
if((float)info[i][2]<=20){
MathsNum[1]++;
Num[0][2]=MathsNum[1];
}
else
if((float)info[i][2]<=30){
MathsNum[2]++;
Num[0][3]=MathsNum[2];
}
else
if((float)info[i][2]<=40){
MathsNum[3]++;
Num[0][4]=MathsNum[3];
}
else
if((float)info[i][2]<=50){
MathsNum[4]++;
Num[0][5]=MathsNum[4];
}
else
if((float)info[i][2]<=60){
MathsNum[5]++;
Num[0][6]=MathsNum[5];
}
else
if((float)info[i][2]<=70){
MathsNum[6]++;
Num[0][7]=MathsNum[6];
}
else
if((float)info[i][2]<=80){
MathsNum[7]++;
Num[0][8]=MathsNum[7];
}
else
if((float)info[i][2]<=90){
MathsNum[8]++;
Num[0][9]=MathsNum[8];
}
else{
MathsNum[9]++;
Num[0][10]=MathsNum[9];
}
}
for(int i=0;i<count;i++){
if((float)info[i][3]<=10){
ChineseNum[0]++;
Num[1][1]=ChineseNum[0];
}
else
if((float)info[i][3]<=20){
ChineseNum[1]++;
Num[1][2]=ChineseNum[1];
}
else
if((float)info[i][3]<=30){
MathsNum[2]++;
Num[1][3]=ChineseNum[2];
}
else
if((float)info[i][3]<=40){
ChineseNum[3]++;
Num[1][4]=ChineseNum[3];
}
else
if((float)info[i][3]<=50){
ChineseNum[4]++;
Num[1][5]=ChineseNum[4];
}
else
if((float)info[i][3]<=60){
ChineseNum[5]++;
Num[1][6]=ChineseNum[5];
}
else
if((float)info[i][3]<=70){
ChineseNum[6]++;
Num[1][7]=ChineseNum[6];
}
else
if((float)info[i][3]<=80){
ChineseNum[7]++;
Num[1][8]=ChineseNum[7];
}
else
if((float)info[i][3]<=90){
ChineseNum[8]++;
Num[1][9]=ChineseNum[8];
}
else{
ChineseNum[9]++;
Num[1][10]=ChineseNum[9];
}
}
for(int i=0;i<count;i++){
if((float)info[i][4]<=10){
ArtNum[0]++;
Num[2][1]=ArtNum[0];
}
else
if((float)info[i][4]<=20){
ArtNum[1]++;
Num[2][2]=ArtNum[1];
}
else
if((float)info[i][4]<=30){
ArtNum[2]++;
Num[2][3]=ArtNum[2];
}
else
if((float)info[i][4]<=40){
ArtNum[3]++;
Num[2][4]=ArtNum[3];
}
else
if((float)info[i][4]<=50){
ArtNum[4]++;
Num[2][5]=ArtNum[4];
}
else
if((float)info[i][4]<=60){
ArtNum[5]++;
Num[2][6]=ArtNum[5];
}
else
if((float)info[i][4]<=70){
ArtNum[6]++;
Num[2][7]=ArtNum[6];
}
else
if((float)info[i][4]<=80){
ArtNum[7]++;
Num[2][8]=ArtNum[7];
}
else
if((float)info[i][4]<=90){
ArtNum[8]++;
Num[2][9]=ArtNum[8];
}
else{
ArtNum[9]++;
Num[2][10]=ArtNum[9];
}
}

我是通过将mysql数据读出,然后用数组的方法统计各分段的人数的,可不可以直接在mysql中进行个分段人数统计呢?谢谢了[/code]
...全文
1129 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
小公牛123 2018-03-01
  • 打赏
  • 举报
回复
那你可以去搜索下 可以的 sql语句条件查询 例如:找出分数在50和60之间的学生姓名和编号 select t.id,t.name from student t where t.chinese between 50 and 60;

50,639

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧