mysql查询各班级数学100分的如果没有就班级也要显示
时间: 2023-06-02 15:04:00 浏览: 35
可以使用以下 SQL 语句来查询各班级数学成绩为100分的学生数量,如果没有100分,则班级也要显示:
SELECT class, COUNT(*) AS num
FROM scores
WHERE subject = 'math' AND score = 100
GROUP BY class
UNION
SELECT class, 0 AS num
FROM (SELECT DISTINCT class FROM scores) AS t1
WHERE NOT EXISTS (
SELECT * FROM scores AS t2
WHERE t1.class = t2.class AND subject = 'math' AND score = 100
)
ORDER BY class;
相关问题
Mysql 中求出每个班级的数学总成绩大于200的班级和成绩信息 应该怎么写
可以这样写SQL查询语句:
SELECT class_name, SUM(math_score) as total_score
FROM student_score
GROUP BY class_name
HAVING total_score > 200;
其中 student_score 是存储学生成绩信息的表,包含了班级名称、学生姓名、数学成绩等字段。GROUP BY 和 SUM 函数用于计算每个班级的数学总成绩,HAVING 子句过滤出数学总成绩大于200的班级。最终查询结果包含班级名称和该班级的数学总成绩。
一个班级表 查询班级表查询数学成绩综合 并且查询数学成绩的学生的姓名学号等信息 然后一次性映射到一个实体list里面
好的,我理解了你的问题。根据你的要求,我可以为你提供一个示例代码,用于从班级表中查询数学成绩综合,并将数学成绩学生的姓名、学号等信息一次性映射到一个实体list中。以下是示例代码:
```python
import pymysql
# 连接数据库
conn = pymysql.connect(host='localhost', port=3306, user='root', password='password', db='test')
# 打开游标
cursor = conn.cursor()
# 查询数学成绩综合并获取学生信息
sql = "SELECT s.name, s.student_id, s.math_score FROM student s INNER JOIN class c ON s.class_id = c.class_id WHERE subject = 'math'"
cursor.execute(sql)
# 将学生信息和数学成绩综合映射到实体list中
student_list = []
for row in cursor.fetchall():
student = {
'name': row[0],
'student_id': row[1],
'math_score': row[2],
}
student_list.append(student)
# 关闭游标和数据库连接
cursor.close()
conn.close()
# 打印实体list
print(student_list)
```
这段代码首先连接了一个名为“test”的MySQL数据库,并查询了数学成绩综合以及学生的姓名、学号等信息。然后,将查询到的信息映射到一个实体list中,并打印出来。
你可以根据自己的需要修改这段代码,例如更改查询的表名、字段名等。希望这能帮助到你!