查询所有的学生的成绩,如果在60--70之间则级别为差,70--80位中 80 --90 良 90--100 优秀 小于60 则不及格,没有成绩则是缺考;
时间: 2023-06-11 20:04:14 浏览: 49
您好,根据您的要求,可以通过以下 SQL 语句查询所有学生的成绩及其级别:
```sql
SELECT
student_name,
IFNULL(score, '缺考') AS score,
CASE
WHEN score < 60 THEN '不及格'
WHEN score BETWEEN 60 AND 69 THEN '差'
WHEN score BETWEEN 70 AND 79 THEN '良'
WHEN score BETWEEN 80 AND 89 THEN '中等'
WHEN score BETWEEN 90 AND 100 THEN '优秀'
ELSE '成绩无效'
END AS level
FROM
student_info
LEFT JOIN
exam_score
ON
student_info.student_id = exam_score.student_id;
```
其中,`student_info` 表存放学生信息,包含学生 id 和姓名等字段,`exam_score` 表存放考试成绩信息,包含学生 id、考试科目和成绩等字段。上述 SQL 语句使用了左连接(`LEFT JOIN`)将两个表按照学生 id 进行关联,同时使用了 `IFNULL` 函数将成绩表中的 `NULL` 值替换为字符串 `'缺考'`,并使用 `CASE WHEN` 表达式对成绩进行分级。
相关问题
sql查询成绩在70-80学生的学号成绩和姓名
这里假设学生信息存储在名为"students"的表中,其中学生的学号、姓名和成绩分别存储在"student_id"、"student_name"和"score"三个字段中。可以使用如下SQL语句查询成绩在70-80之间的学生的学号、姓名和成绩信息:
SELECT student_id, student_name, score
FROM students
WHERE score >= 70 AND score <= 80;
其中,"SELECT"语句用于选择需要查询的字段,即学号、姓名和成绩;"FROM"语句用于指定查询的表,即"students"表;"WHERE"语句用于添加查询条件,即成绩在70-80之间。最终查询结果将返回符合条件的学生的学号、姓名和成绩信息。
用子查询,查询选修“高等数学”课程且成绩在 80-90 分之间的学生学号及成绩。
好的,以下是查询语句:
```
SELECT 学号, 成绩
FROM 成绩表
WHERE 课程名称 = '高等数学' AND 成绩 BETWEEN 80 AND 90;
```
如果使用子查询,可以这样写:
```
SELECT 学号, 成绩
FROM 成绩表
WHERE 课程编号 = (
SELECT 课程编号
FROM 课程表
WHERE 课程名称 = '高等数学'
) AND 成绩 BETWEEN 80 AND 90;
```
其中,子查询 `SELECT 课程编号 FROM 课程表 WHERE 课程名称 = '高等数学'` 用于查询课程名称为“高等数学”的课程编号,主查询则用这个课程编号和成绩范围来筛选符合条件的学生学号及其成绩。