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

1949idc 2年前 (2024-09-19) 阅读数 434 #编程语言

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 的学生。最后,查询结果将显示符合条件的学生姓名和平均分。

版权声明

本文内容由互联网用户自发贡献,该文观点仅代表作者本人
本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

© 2010 首途云安 & 厦门硕顿信息技术有限公司 & 闽ICP备11016866号  增值电信业务经营许可证:B1-20203020 地址:福建厦门思明区嘉禾路297号1806
高新技术企业
软件产品证书
计算机软件著作权
ISO认证
国家3A企业