.用一条 SQL 语句 查询出每门课都大于 80 分的学生姓名 grade表: name course score 张三 语文 81 张三数学 75 李四语文 76 李四 数学 90 王五 语文81 王五 数学 100 王五 英语 90
时间: 2024-02-17 17:10:23 浏览: 87
可以使用以下SQL语句查询出每门课都大于80分的学生姓名:
```sql
SELECT name
FROM grade
GROUP BY name
HAVING MIN(score) > 80;
```
以上SQL语句使用`GROUP BY`对姓名进行分组,然后使用`HAVING`关键字过滤分组结果,只选择所有分数都大于80分的学生姓名。`MIN(score)`表示每个分组中最小的分数,如果最小分数都大于80分,则表示该学生每门课都大于80分。
相关问题
数据库SQL:一张学生成绩表score,部分内容如下:name course grade 张三操作系统67 张三数据结构86 李四软件工程89 用一条SQL语句查询出每]课都大于80分的学生姓名。
SELECT name FROM score WHERE course IN (SELECT DISTINCT course FROM score WHERE grade > 80) GROUP BY name HAVING COUNT(*) = (SELECT COUNT(DISTINCT course) FROM score WHERE grade > 80)
(30分)解答下面的问题或书写SQL:1.1写出创建课程表(course)的语句。 1.2写sql给student表中插入一条数据,序号为“0000”,姓名为“王二”,年龄为“18”,性别为“MP”' 1.3写sql给course表添加字段teacherName,类型为varchar长度为20。 1.4课程名为“语文”的course表,更新字段teacherName内容为“张三”。 1.5写sql查询学号为“0001”的学生各科成绩总和。 1.6写sql查询出学号为“0001”的学生的姓名、课程名称、成绩。
1.1 创建课程表(course)的语句:
CREATE TABLE course (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
courseName VARCHAR(50) NOT NULL,
credit INT NOT NULL,
score FLOAT NOT NULL
);
1.2 给student表中插入一条数据,序号为“0000”,姓名为“王二”,年龄为“18”,性别为“MP”:
INSERT INTO student (id, name, age, gender)
VALUES ('0000', '王二', 18, 'MP');
1.3 给course表添加字段teacherName,类型为varchar长度为20:
ALTER TABLE course
ADD teacherName VARCHAR(20);
1.4 课程名为“语文”的course表,更新字段teacherName内容为“张三”:
UPDATE course
SET teacherName = '张三'
WHERE courseName = '语文';
1.5 查询学号为“0001”的学生各科成绩总和:
SELECT SUM(score) AS total_score
FROM grade
WHERE studentId = '0001';
1.6 查询出学号为“0001”的学生的姓名、课程名称、成绩:
SELECT s.name AS student_name, c.courseName, g.score
FROM student s
JOIN grade g ON s.id = g.studentId
JOIN course c ON g.courseId = c.id
WHERE s.id = '0001';
阅读全文