HAVING语句在多表连接查询中的应用

avatar
作者
筋斗云
阅读量:0

HAVING 语句在 SQL 中主要用于对分组后的结果进行筛选

首先,我们需要创建两个表格:一个是学生表(students),另一个是成绩表(scores)。

CREATE TABLE students (     id INT PRIMARY KEY,     name VARCHAR(255) NOT NULL );  CREATE TABLE scores (     student_id INT,     subject VARCHAR(255) NOT NULL,     score INT NOT NULL,     FOREIGN KEY (student_id) REFERENCES students(id) ); 

接下来,我们插入一些示例数据:

INSERT INTO students (id, name) VALUES (1, 'Alice'); INSERT INTO students (id, name) VALUES (2, 'Bob'); INSERT INTO students (id, name) VALUES (3, 'Cathy');  INSERT INTO scores (student_id, subject, score) VALUES (1, 'Math', 90); INSERT INTO scores (student_id, subject, score) VALUES (1, 'English', 85); INSERT INTO scores (student_id, subject, score) VALUES (2, 'Math', 75); INSERT INTO scores (student_id, subject, score) VALUES (2, 'English', 88); INSERT INTO scores (student_id, subject, score) VALUES (3, 'Math', 92); INSERT INTO scores (student_id, subject, score) VALUES (3, 'English', 78); 

现在,我们想要查询平均分大于等于 85 的学生及其平均分。这时候就可以使用 HAVING 语句了。

SELECT s.name, AVG(sc.score) as average_score FROM students s JOIN scores sc ON s.id = sc.student_id GROUP BY s.id, s.name HAVING AVG(sc.score) >= 85; 

这个查询首先连接了学生表和成绩表,然后按照学生的 ID 和姓名进行分组。接着计算每个学生的平均分,并使用 HAVING 语句筛选出平均分大于等于 85 的学生。最后,查询结果将显示符合条件的学生姓名和平均分。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!