mysql中having用法

mysql中having用法

mysql中having用法

在MYSQL中,HAVING子句可以在GROUP BY子句之后对分组进行过滤。它允许你筛选对分组应用了聚合函数后的结果。HAVING子句可以使用与WHERE子句相同的运算符(比如AND,OR,NOT),并且可以使用聚合函数。

语法

HAVING子句的基本语法如下:

SELECT column_name(s), aggregate_function(column_name)
FROM table_name
WHERE condition
GROUP BY column_name
HAVING condition;
  • column_name(s):要显示的列名或表达式
  • aggregate_function:聚合函数,比如SUM()、COUNT()等
  • table_name:要查询的表名
  • condition:筛选的条件

示例

假设我们有一个学生成绩表students_scores,包含学生的姓名、科目和成绩。现在我们想找出各科成绩平均分超过80分的科目。

CREATE TABLE students_scores (
    id INT,
    name varchar(50),
    subject varchar(50),
    score INT
);

INSERT INTO students_scores (id, name, subject, score) VALUES (1, 'Alice', 'Math', 85);
INSERT INTO students_scores (id, name, subject, score) VALUES (2, 'Bob', 'Math', 75);
INSERT INTO students_scores (id, name, subject, score) VALUES (3, 'Alice', 'English', 90);
INSERT INTO students_scores (id, name, subject, score) VALUES (4, 'Bob', 'English', 85);
INSERT INTO students_scores (id, name, subject, score) VALUES (5, 'Alice', 'History', 70);
INSERT INTO students_scores (id, name, subject, score) VALUES (6, 'Bob', 'History', 80);

SELECT subject, AVG(score) as avg_score
FROM students_scores
GROUP BY subject
HAVING AVG(score) > 80;

运行以上SQL语句,我们会得到如下结果:

+---------+----------+
| subject | avg_score|
+---------+----------+
| Math    | 80       |
| English | 87.5     |
+---------+----------+

在这个示例中,我们首先按科目对学生成绩进行分组(GROUP BY subject),然后使用HAVING子句筛选出平均分超过80分的科目。

结论

通过上面的示例,我们了解了在MYSQL中如何使用HAVING子句对分组后的结果进行筛选。HAVING子句可以帮助我们做更细致的数据分析,找出符合特定条件的结果。在实际应用中,可以根据具体业务需求来灵活运用HAVING子句。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程