1. 首页 > 教育

1查询每个班的最高分,平均分,总分 2查出每个班每门科目的总分 3显示每个学生成绩合格或不合格?(一张学生成绩表内SQL查询每个班级每门课程的平均分)

1查询每个班的最高分,平均分,总分 2查出每个班每门科目的总分 3显示每个学生成绩合格或不合格?(一张学生成绩表内SQL查询每个班级每门课程的平均分)

一张学生成绩表内SQL查询每个班级每门课程的平均分

select avg(分数) as 平均分, rtrim(cast(sum(case when 分数>=60 then 1 end)/count(*)*100 as char(10)))+'%' as 及格率 from A group by 班级,课程

SQL语句 计算每个班的高考总分平均分,显示班级号和高考平均分

语句如下:

  select 班级号, avg(总成绩)

  from (

  select 班级号,学生号,sum(成绩) 总成绩

  from 表

  )

  结构化查询语言(Structured Query Language)简称SQL(发音:/ˈes kjuː ˈel/ "S-Q-L"),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

  结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。

输入5个学生4门课程的成绩,求(1)每个学生的总分(2)每门课程的平均分(3)输出总分最高的学生的姓名和总成绩

我曾经回答过一个问题,和你的类似。 题目如下,你可以参考一下:

/*

从键盘输入38个学生的基本数据,包括学号,姓名,性别以及3门课程的单科成绩。

(1) 计算每个学生3门课程的总分和平均成绩;

(2) 找出每门课程中成绩最好和成绩最差的学生,并输出这些学生的基本数据;

(3) 3门课程总成绩按由高分到低分的顺序排序,输出排序后的学生的基本数据。

*/

/*

VC++ 6.0测试通过。 键盘输入问题没解决,你自己去解决。 主要是要注意输入字符串的问题,特别是用scanf函数进行字符串输入的时候。我下面写的那个从键盘输入数据有问题,所以被我注释了。

还有我只用了5个学生做测试,你要用38个的话,把SIZE改成38,在数组初始化的时候初始化38个数据就行了。

学生的性别,我用'n'表示男,'v'表示女

Turbo C 2.01 测试通过,不过输出的信息比较多,我这边Turbo C查看运行结果是不能滚屏,所以显示不全,不知道你那边怎样

*/

#include <stdio.h>

#define SIZE 5

struct student

{

int num;

char name[100];

char sex;

double score1;

double score2;

double score3;

};

/* 输出学生信息 */

void print_student(struct student stu)

{

printf("num:%d\nname:%s\nsex:%c\nscore1:%f\nscore2:%f\nscore3:%f\n\n\n",stu.num,stu.name,stu.sex,stu.score1,stu.score2,stu.score3);

}

/* ---------------------------------------- */

/* 求每个学生三门课程的总分。 */

double score_Sum(struct student stu)

{

double sum=stu.score1;

sum+=stu.score2;

sum+=stu.score3;

return sum;

}

/* ---------------------------------------- */

/* 每个学生三门课的平均成绩 */

double scoreAvg(struct student stu)

{

return (score_Sum(stu)/3.0);

}

/* ---------------------------------------- */

/* 求score1最高和最低的学生 */

void score1(struct student stu[])

{

double min=stu[0].score1,max=stu[0].score1;

int index_min=0,index_max=0,i;

for(i=0;i<SIZE;i++)

{

if(min>stu[i].score1)

{

min=stu[i].score1;

index_min=i;

}

if(max<stu[i].score1)

{

max=stu[i].score1;

index_max=i;

}

}

printf("score1 max:\n");

print_student(stu[index_max]);

printf("score1 min:\n");

print_student(stu[index_min]);

}

/* ---------------------------------------- */

/* 求score2最高和最低的学生 */

void score2(struct student stu[])

{

double min=stu[0].score2,max=stu[0].score2;

int index_min=0,index_max=0,i;

for(i=0;i<SIZE;i++)

{

if(min>stu[i].score2)

{

min=stu[i].score2;

index_min=i;

}

if(max<stu[i].score2)

{

max=stu[i].score2;

index_max=i;

}

}

printf("score2 max:\n");

print_student(stu[index_max]);

printf("score2 min:\n");

print_student(stu[index_min]);

}

/* ---------------------------------------- */

/* 求score3最高和最低的学生 */

void score3(struct student stu[])

{

double min=stu[0].score3,max=stu[0].score3;

int index_min=0,index_max=0,i;

for(i=0;i<SIZE;i++)

{

if(min>stu[i].score3)

{

min=stu[i].score3;

index_min=i;

}

if(max<stu[i].score3)

{

max=stu[i].score3;

index_max=i;

}

}

printf("score3 max:\n");

print_student(stu[index_max]);

printf("score3 min:\n");

print_student(stu[index_min]);

}

/* ---------------------------------------- */

/* 按总分从高到低排序,并输出学生信息 */

void sortAndPrint(struct student stu[])

{

int i,j;

for(j=0;j<SIZE;j++)

{

for(i=j;i<SIZE-1;i++)

{

if(score_Sum(stu[i])<score_Sum(stu[i+1]))

{

struct student stu_t=stu[i];

stu[i]=stu[i+1];

stu[i+1]=stu_t;

}

}

}

for(i=0;i<SIZE;i++)

{

print_student(stu[i]);

}

}

/* ---------------------------------------- */

void main()

{

int i;

struct student stu[SIZE]=

{

{123456,"wangqiguo",'n',98,96,85},

{14523,"zhangsan",'v',98,85,74},

{15632,"lisi",'n',96,85,86},

{12563,"huliu",'v',85,96,86},

{12563,"zhujiang",'n',98,98,96}

};

/* 循环输入,这个有点问题,主要是输入格式方面我直接在程序里面进行的初始化,所以要从键盘里面输入的话,你要自己写了 */

/*

for(i=0;i<SIZE;i++)

{

printf("please input num,name,sex,score1,score2,score3 in stu[%d]:\n",i);

scanf("%d,%s,%c,%f,%f,%f",&stu[i].num,stu[i].name,&stu[i].sex,&stu[i].score1,&stu[i].score2,&stu[i].score3);

printf("\n");

}*/

/* 输出每个学生的总成绩和平均成绩 */

for(i=0;i<SIZE;i++)

{

printf("stu[%d] sum:%f,avg:%f\n",i,score_Sum(stu[i]),scoreAvg(stu[i]));

}

printf("\n\n\n\n\n-------------------------------------------------\n\n\n\n\n");

/* 分别输出score1、score2、score3科目的最高分,和最低分学生信息 */

score1(stu);

score2(stu);

score3(stu);

printf("\n\n\n\n\n-------------------------------------------------\n\n\n\n\n");

/* 按照总分高低顺序排序并输出 */

sortAndPrint(stu);

}

SQL查询每门课程的最高分 从三表中查询每门课程的最高分学生,显示学号,姓名,课程名称和成绩四列。

三张表关联,再按课程进行分组,取每门课程的最高分,显示你需要的四列数据就好了。把表结构贴一下,可以给你写一下。