2025年01月04日 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;
假设我们有一个学生成绩表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子句。
本文链接:http://so.lmcjl.com/news/20720/