查询平均成绩比95035班平均成绩低的班级。查询结果包括班级名称,平均分数
时间: 2024-03-10 10:49:32 浏览: 66
好的,以下是查询语句:
```
SELECT c.class_name, AVG(s.score) AS avg_score
FROM score s, student st, class c
WHERE s.student_id = st.id AND st.class_id = c.id AND c.class_name <> '95035'
GROUP BY c.id
HAVING AVG(s.score) < (SELECT AVG(score) FROM score WHERE student_id IN (SELECT id FROM student WHERE class_id IN (SELECT id FROM class WHERE class_name = '95035')));
```
这个查询语句会返回平均成绩比 95035 班平均成绩低的班级名称和平均分数。其中,`score` 表存储学生课程成绩信息,`student` 表存储学生信息,`class` 表存储班级信息。
请注意,以上的查询语句只是一个示例,具体查询语句需要根据数据库表结构和数据情况进行调整。
相关问题
在学生表、课程表、分数表中,查询平均成绩比95035班平均成绩低的班级。查询结果包括班级名称,平均分数
好的,以下是查询语句:
```
SELECT c.class_name, AVG(s.score) AS avg_score
FROM score s, student st, class c
WHERE s.student_id = st.id AND st.class_id = c.id AND c.class_name <> '95035'
GROUP BY c.id
HAVING AVG(s.score) < (SELECT AVG(score) FROM score WHERE course_id IN (SELECT id FROM course WHERE course_name = 'math') AND student_id IN (SELECT id FROM student WHERE class_id IN (SELECT id FROM class WHERE class_name = '95035')));
```
这个查询语句会返回平均成绩比 95035 班数学课程平均成绩低的班级名称和平均分数。其中,`score` 表存储学生课程成绩信息,`student` 表存储学生信息,`class` 表存储班级信息,`course` 表存储课程信息。
请注意,以上的查询语句只是一个示例,具体查询语句需要根据数据库表结构和数据情况进行调整。
要求程序在一个源程序文件采用10个函数实现以下几个功能: (1)输出功能:输出该班所有学生的信息;(2)计算班级里每名同学的平均成绩(平均成绩保留小数点两位有效数字)并存储到计算机,最终输出该班级所有学生的信息(包括学号、姓名、班级,专业,性别、年龄、6门课程的成绩、平均成绩);(3)查询功能:根据学生的姓名或者学号查询该生的信息并输出该学生的所有信息;(4)成绩不及格学生信息输出:找出平均成绩在60分以下的学生,并输出他们的全部信息;(5)计算每一门课程的平均分数,并输出课程名称及平均分数;(6)找出有2门以上课程不及格的学生,并输出他们的全部信息(学号、姓名、班
号、专业、性别、年龄、6门课程的成绩、平均成绩)。
以下是一个可能的实现:
```c++
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
#include <vector>
using namespace std;
// 学生信息的结构体
struct Student {
string id;
string name;
string major;
string gender;
int age;
vector<int> scores;
double average;
};
// 读取学生信息文件
void readStudentInfo(vector<Student>& students, const string& filename) {
ifstream fin(filename);
if (!fin) {
cerr << "Error opening file: " << filename << endl;
exit(1);
}
string line;
while (getline(fin, line)) {
Student s;
stringstream ss(line);
ss >> s.id >> s.name >> s.major >> s.gender >> s.age;
for (int i = 0; i < 6; i++) {
int score;
ss >> score;
s.scores.push_back(score);
}
students.push_back(s);
}
fin.close();
}
// 输出所有学生信息
void printAllStudents(const vector<Student>& students) {
cout << left << setw(10) << "ID"
<< left << setw(10) << "Name"
<< left << setw(10) << "Major"
<< left << setw(8) << "Gender"
<< left << setw(5) << "Age";
for (int i = 1; i <= 6; i++) {
cout << left << setw(8) << "Score" << i;
}
cout << left << setw(10) << "Average" << endl;
for (const auto& s : students) {
cout << left << setw(10) << s.id
<< left << setw(10) << s.name
<< left << setw(10) << s.major
<< left << setw(8) << s.gender
<< left << setw(5) << s.age;
for (const auto& score : s.scores) {
cout << left << setw(8) << score;
}
cout << left << setw(10) << fixed << setprecision(2) << s.average << endl;
}
}
// 计算每个学生的平均成绩
void calculateAverages(vector<Student>& students) {
for (auto& s : students) {
double sum = 0;
for (const auto& score : s.scores) {
sum += score;
}
s.average = sum / 6;
}
}
// 输出所有学生信息,包括平均成绩
void printAllStudentsWithAverage(const vector<Student>& students) {
cout << left << setw(10) << "ID"
<< left << setw(10) << "Name"
<< left << setw(10) << "Major"
<< left << setw(8) << "Gender"
<< left << setw(5) << "Age";
for (int i = 1; i <= 6; i++) {
cout << left << setw(8) << "Score" << i;
}
cout << left << setw(10) << "Average" << endl;
for (const auto& s : students) {
cout << left << setw(10) << s.id
<< left << setw(10) << s.name
<< left << setw(10) << s.major
<< left << setw(8) << s.gender
<< left << setw(5) << s.age;
for (const auto& score : s.scores) {
cout << left << setw(8) << score;
}
cout << left << setw(10) << fixed << setprecision(2) << s.average << endl;
}
ofstream fout("class_average.txt");
if (!fout) {
cerr << "Error opening file: class_average.txt" << endl;
exit(1);
}
for (const auto& s : students) {
fout << s.id << " " << s.name << " " << s.major << " " << s.gender << " " << s.age << " ";
for (const auto& score : s.scores) {
fout << score << " ";
}
fout << fixed << setprecision(2) << s.average << endl;
}
fout.close();
}
// 根据学生姓名或学号查找学生,并输出学生信息
void findStudent(const vector<Student>& students, const string& keyword) {
for (const auto& s : students) {
if (s.id == keyword || s.name == keyword) {
cout << left << setw(10) << "ID"
<< left << setw(10) << "Name"
<< left << setw(10) << "Major"
<< left << setw(8) << "Gender"
<< left << setw(5) << "Age";
for (int i = 1; i <= 6; i++) {
cout << left << setw(8) << "Score" << i;
}
cout << left << setw(10) << "Average" << endl;
cout << left << setw(10) << s.id
<< left << setw(10) << s.name
<< left << setw(10) << s.major
<< left << setw(8) << s.gender
<< left << setw(5) << s.age;
for (const auto& score : s.scores) {
cout << left << setw(8) << score;
}
cout << left << setw(10) << fixed << setprecision(2) << s.average << endl;
return;
}
}
cout << "Student not found." << endl;
}
// 输出平均成绩不及格的学生信息
void printFailedStudents(const vector<Student>& students) {
cout << left << setw(10) << "ID"
<< left << setw(10) << "Name"
<< left << setw(10) << "Major"
<< left << setw(8) << "Gender"
<< left << setw(5) << "Age";
for (int i = 1; i <= 6; i++) {
cout << left << setw(8) << "Score" << i;
}
cout << left << setw(10) << "Average" << endl;
for (const auto& s : students) {
if (s.average < 60) {
cout << left << setw(10) << s.id
<< left << setw(10) << s.name
<< left << setw(10) << s.major
<< left << setw(8) << s.gender
<< left << setw(5) << s.age;
for (const auto& score : s.scores) {
cout << left << setw(8) << score;
}
cout << left << setw(10) << fixed << setprecision(2) << s.average << endl;
}
}
}
// 计算每个课程的平均分数,并输出课程名称及平均分数
void calculateCourseAverages(const vector<Student>& students) {
vector<double> courseSums(6, 0);
vector<int> courseCounts(6, 0);
for (const auto& s : students) {
for (int i = 0; i < 6; i++) {
courseSums[i] += s.scores[i];
if (s.scores[i] >= 60) {
courseCounts[i]++;
}
}
}
cout << left << setw(15) << "Course"
<< left << setw(10) << "Average" << endl;
for (int i = 0; i < 6; i++) {
double courseAverage = courseSums[i] / students.size();
cout << left << setw(15) << ("Course " + to_string(i + 1))
<< left << setw(10) << fixed << setprecision(2) << courseAverage << endl;
}
}
// 输出有2门以上课程不及格的学生信息
void printFailedTwiceStudents(const vector<Student>& students) {
cout << left << setw(10) << "ID"
<< left << setw(10) << "Name"
<< left << setw(10) << "Major"
<< left << setw(8) << "Gender"
<< left << setw(5) << "Age";
for (int i = 1; i <= 6; i++) {
cout << left << setw(8) << "Score" << i;
}
cout << left << setw(10) << "Average" << endl;
for (const auto& s : students) {
int failedCount = 0;
for (const auto& score : s.scores) {
if (score < 60) {
failedCount++;
}
}
if (failedCount >= 2) {
cout << left << setw(10) << s.id
<< left << setw(10) << s.name
<< left << setw(10) << s.major
<< left << setw(8) << s.gender
<< left << setw(5) << s.age;
for (const auto& score : s.scores) {
cout << left << setw(8) << score;
}
cout << left << setw(10) << fixed << setprecision(2) << s.average << endl;
}
}
}
int main() {
vector<Student> students;
readStudentInfo(students, "students.txt");
calculateAverages(students);
printAllStudents(students);
printAllStudentsWithAverage(students);
findStudent(students, "Tom");
findStudent(students, "1002");
printFailedStudents(students);
calculateCourseAverages(students);
printFailedTwiceStudents(students);
return 0;
}
```
注意,上述实现中的 `students.txt` 文件应该按照以下格式保存:
```
1001 Tom ComputerScience Male 20 80 85 90 88 92 95
1002 John English Female 19 70 75 68 72 65 62
1003 Mary Psychology Female 21 75 80 78 82 85 88
...
```
阅读全文