mysql 查询每个学生的各科成绩的平均分
时间: 2023-05-27 10:01:03 浏览: 1050
假设有如下的学生成绩表(表名为 grades):
| id | name | course | score |
| --- | ---- | -------- | ----- |
| 1 | 张三 | English | 80 |
| 2 | 张三 | Math | 90 |
| 3 | 李四 | English | 70 |
| 4 | 李四 | Math | 85 |
| 5 | 王五 | English | 90 |
| 6 | 王五 | Math | 95 |
则可以使用如下的 SQL 语句查询每个学生的各科成绩的平均分:
```
SELECT name, AVG(score) AS average_score
FROM grades
GROUP BY name;
```
执行结果为:
| name | average_score |
| ---- | ------------ |
| 张三 | 85 |
| 李四 | 77.5 |
| 王五 | 92.5 |
说明:使用 AVG() 函数对每个学生的成绩进行求平均值操作,同时使用 GROUP BY 子句将成绩按照学生姓名分组。注意,需要将学生姓名也包含在查询结果中,使用 SELECT 子句选择 name 和平均分。
相关问题
使用MySQL查询平均分前30%的学生的各科成绩及平均分字段名为StuName 学生姓名,CBT_scor 计算机应用基础成绩,PS_score PS成绩,H5_score H5成绩 FROM t_student JOIN t_score on t_score.StuId=t_student.StuId
你可以使用以下SQL语句查询平均分前30%的学生的各科成绩及平均分:
```
SELECT StuName, CBT_score, PS_score, H5_score
FROM (
SELECT *, (@rank:=@rank+1) AS rank
FROM (
SELECT t_student.StuName, AVG(t_score.CBT_score) AS CBT_score, AVG(t_score.PS_score) AS PS_score, AVG(t_score.H5_score) AS H5_score, AVG(t_score.total_score) AS total_score
FROM t_student
JOIN t_score ON t_student.StuId = t_score.StuId
GROUP BY t_student.StuName
ORDER BY total_score DESC
) AS ranked, (SELECT @rank:=0) AS r
) AS top30
WHERE rank <= (SELECT COUNT(*) * 0.3 FROM t_student)
```
这个查询语句首先计算每个学生的平均分,并按照平均分从高到低进行排名。然后再从排名中选择前30%的学生,并返回他们的姓名、计算机应用基础成绩、PS成绩、H5成绩。注意,这个查询语句中的t_student和t_score分别是学生信息表和成绩表的表名,你需要根据具体情况进行修改。
学生成绩管理系统 建立图形用户界面对学生成绩数据库的数据进行增加、修改、删除、查询等操作。功能要求: 创建若干学生对象,每个学生信息包括学号,姓名,四科成绩(应用数学、大学英语、Java程序设计、数据库)。 可以按姓名或学号查询个人信息 可以修改学生成绩 可以删除学生记录 可以计算每学生的平均成绩、显示学生信息、按平均成绩排序,输出排序结果; 可以计算并输出各科平均分,最高分和最低分。 输入学生信息时,必须有容错处理的能力 用图形用户界面完成人机交互 学生以学号注册并登录,信息用数据库存放。代码
以下是一个简单的Java学生成绩管理系统的示例代码,包括图形用户界面和数据库。这个示例代码可以实现增加、修改、删除、查询学生信息的功能,以及计算每个学生的平均成绩、显示学生信息、排序、计算各科平均分、最高分和最低分等功能。
请注意,这只是一个示例代码,您可以根据自己的需求进行修改和扩展。
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;
public class StudentGradeManagementSystem extends JFrame implements ActionListener {
private JLabel label1, label2, label3, label4, label5, label6, label7;
private JTextField text1, text2, text3, text4, text5, text6, text7;
private JButton button1, button2, button3, button4, button5, button6;
private JTextArea textArea;
private JScrollPane scrollPane;
private Connection connection = null;
private PreparedStatement preparedStatement = null;
public StudentGradeManagementSystem() {
initUI();
initDB();
}
private void initUI() {
setTitle("学生成绩管理系统");
setLayout(new GridLayout(8, 2));
setSize(600, 600);
// 第一行:学号
label1 = new JLabel("学号:");
text1 = new JTextField(10);
add(label1);
add(text1);
// 第二行:姓名
label2 = new JLabel("姓名:");
text2 = new JTextField(10);
add(label2);
add(text2);
// 第三行:应用数学成绩
label3 = new JLabel("应用数学成绩:");
text3 = new JTextField(10);
add(label3);
add(text3);
// 第四行:大学英语成绩
label4 = new JLabel("大学英语成绩:");
text4 = new JTextField(10);
add(label4);
add(text4);
// 第五行:Java程序设计成绩
label5 = new JLabel("Java程序设计成绩:");
text5 = new JTextField(10);
add(label5);
add(text5);
// 第六行:数据库成绩
label6 = new JLabel("数据库成绩:");
text6 = new JTextField(10);
add(label6);
add(text6);
// 第七行:按钮
button1 = new JButton("添加");
button1.addActionListener(this);
button2 = new JButton("修改");
button2.addActionListener(this);
button3 = new JButton("删除");
button3.addActionListener(this);
button4 = new JButton("查询");
button4.addActionListener(this);
button5 = new JButton("排序");
button5.addActionListener(this);
button6 = new JButton("统计");
button6.addActionListener(this);
add(button1);
add(button2);
add(button3);
add(button4);
add(button5);
add(button6);
// 第八行:文本框
label7 = new JLabel("学生信息:");
textArea = new JTextArea(15, 30);
textArea.setEditable(false);
scrollPane = new JScrollPane(textArea);
add(label7);
add(scrollPane);
setVisible(true);
}
private void initDB() {
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/student", "root", "password");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
private void addStudent() {
try {
String sql = "INSERT INTO student (id, name, math, english, java, database) VALUES (?, ?, ?, ?, ?, ?)";
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, text1.getText());
preparedStatement.setString(2, text2.getText());
preparedStatement.setString(3, text3.getText());
preparedStatement.setString(4, text4.getText());
preparedStatement.setString(5, text5.getText());
preparedStatement.setString(6, text6.getText());
preparedStatement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
private void updateStudent() {
try {
String sql = "UPDATE student SET name=?, math=?, english=?, java=?, database=? WHERE id=?";
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, text2.getText());
preparedStatement.setString(2, text3.getText());
preparedStatement.setString(3, text4.getText());
preparedStatement.setString(4, text5.getText());
preparedStatement.setString(5, text6.getText());
preparedStatement.setString(6, text1.getText());
preparedStatement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
private void deleteStudent() {
try {
String sql = "DELETE FROM student WHERE id=?";
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, text1.getText());
preparedStatement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
private void searchStudent() {
try {
String sql = "SELECT * FROM student WHERE id=? OR name=?";
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, text1.getText());
preparedStatement.setString(2, text2.getText());
ResultSet resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
textArea.append("学号:" + resultSet.getString("id") + "\n");
textArea.append("姓名:" + resultSet.getString("name") + "\n");
textArea.append("应用数学成绩:" + resultSet.getString("math") + "\n");
textArea.append("大学英语成绩:" + resultSet.getString("english") + "\n");
textArea.append("Java程序设计成绩:" + resultSet.getString("java") + "\n");
textArea.append("数据库成绩:" + resultSet.getString("database") + "\n\n");
}
} catch (SQLException e) {
e.printStackTrace();
}
}
private void sortStudent() {
try {
String sql = "SELECT * FROM student ORDER BY (math+english+java+database)/4 DESC";
preparedStatement = connection.prepareStatement(sql);
ResultSet resultSet = preparedStatement.executeQuery();
textArea.setText("");
while (resultSet.next()) {
textArea.append("学号:" + resultSet.getString("id") + "\n");
textArea.append("姓名:" + resultSet.getString("name") + "\n");
textArea.append("应用数学成绩:" + resultSet.getString("math") + "\n");
textArea.append("大学英语成绩:" + resultSet.getString("english") + "\n");
textArea.append("Java程序设计成绩:" + resultSet.getString("java") + "\n");
textArea.append("数据库成绩:" + resultSet.getString("database") + "\n");
textArea.append("平均成绩:" + (resultSet.getInt("math") + resultSet.getInt("english") + resultSet.getInt("java") + resultSet.getInt("database")) / 4 + "\n\n");
}
} catch (SQLException e) {
e.printStackTrace();
}
}
private void statisticsStudent() {
try {
String sql = "SELECT AVG(math), AVG(english), AVG(java), AVG(database), MAX(math), MAX(english), MAX(java), MAX(database), MIN(math), MIN(english), MIN(java), MIN(database) FROM student";
preparedStatement = connection.prepareStatement(sql);
ResultSet resultSet = preparedStatement.executeQuery();
textArea.setText("");
while (resultSet.next()) {
textArea.append("应用数学平均分:" + resultSet.getFloat(1) + "\n");
textArea.append("大学英语平均分:" + resultSet.getFloat(2) + "\n");
textArea.append("Java程序设计平均分:" + resultSet.getFloat(3) + "\n");
textArea.append("数据库平均分:" + resultSet.getFloat(4) + "\n");
textArea.append("应用数学最高分:" + resultSet.getFloat(5) + "\n");
textArea.append("大学英语最高分:" + resultSet.getFloat(6) + "\n");
textArea.append("Java程序设计最高分:" + resultSet.getFloat(7) + "\n");
textArea.append("数据库最高分:" + resultSet.getFloat(8) + "\n");
textArea.append("应用数学最低分:" + resultSet.getFloat(9) + "\n");
textArea.append("大学英语最低分:" + resultSet.getFloat(10) + "\n");
textArea.append("Java程序设计最低分:" + resultSet.getFloat(11) + "\n");
textArea.append("数据库最低分:" + resultSet.getFloat(12) + "\n");
}
} catch (SQLException e) {
e.printStackTrace();
}
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == button1) {
addStudent();
textArea.setText("添加成功!");
} else if (e.getSource() == button2) {
updateStudent();
textArea.setText("修改成功!");
} else if (e.getSource() == button3) {
deleteStudent();
textArea.setText("删除成功!");
} else if (e.getSource() == button4) {
searchStudent();
} else if (e.getSource() == button5) {
sortStudent();
} else if (e.getSource() == button6) {
statisticsStudent();
}
}
public static void main(String[] args) {
new StudentGradeManagementSystem();
}
}
```
请注意,这个示例代码仅适用于MySQL数据库,您需要根据自己的数据库类型进行修改。此外,这个示例代码仅实现了基本的增加、修改、删除和查询功能,您可以根据自己的需求进行修改和扩展。
阅读全文