legongju.com
我们一直在努力
2025-01-11 08:02 | 星期六

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

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

未经允许不得转载 » 本文链接:https://www.legongju.com/article/94815.html

相关推荐

  • sql server如何创建学生表

    sql server如何创建学生表

    在 SQL Server 中,您可以使用以下代码来创建一个名为 “学生” 的表:
    CREATE TABLE 学生 ( 学号 INT PRIMARY KEY, 姓名 NVARCHAR(50) NOT NULL, 性别 CHA...

  • sql server不能启动如何解决

    sql server不能启动如何解决

    如果 SQL Server 无法启动,可以尝试以下方法来解决问题: 检查错误日志:查看 SQL Server 的错误日志,了解详细的错误信息。错误日志通常位于以下路径:C:\Prog...

  • sql server联表更新如何实现

    sql server联表更新如何实现

    在 SQL Server 中,可以使用 UPDATE 语句和 JOIN 子句来实现联表更新。以下是一个示例:
    假设有两个表,一个是 employees 表,另一个是 departments 表。我...

  • SQL Server聚集索引是什么

    SQL Server聚集索引是什么

    在 SQL Server 中,聚集索引(Clustered Index)是一种数据存储和组织方式,它决定了表中数据的物理顺序
    聚集索引具有以下特点: 每个表只能有一个聚集索引...

  • 利用HAVING语句进行复杂数据筛选

    利用HAVING语句进行复杂数据筛选

    HAVING 语句在 SQL 中用于对分组后的结果进行筛选
    以下是一个使用 HAVING 语句进行复杂数据筛选的示例:
    -- 假设有一个名为 sales_data 的表,包含以下...

  • 如何在HAVING子句中使用子查询

    如何在HAVING子句中使用子查询

    在 SQL 中,HAVING 子句通常与 GROUP BY 子句一起使用,用于过滤满足特定条件的分组
    SELECT column_name1, aggregate_function(column_name2)
    FROM ta...

  • HAVING语句在聚合函数中的应用

    HAVING语句在聚合函数中的应用

    HAVING 语句在 SQL 查询中用于过滤聚合后的结果
    以下是一个使用 HAVING 语句的示例:
    SELECT department, COUNT(*) as num_employees
    FROM emplo...

  • 如何优化HAVING语句的性能

    如何优化HAVING语句的性能

    在 SQL 查询中,HAVING 子句用于过滤分组后的结果 尽量避免使用 HAVING 子句:尽可能在 WHERE 子句中进行过滤,这样可以减少数据的处理量。只有在必要时才使用 H...