SQL研习录(29)——HAVING子句

SQL研习录(29)——HAVING子句


版权声明

  • 本文原创作者:清风不渡
  • 博客地址:https://blog.csdn.net/WXKKang

一、HAVING子句

1、基础知识

  使用HAVING子句可以指定过滤条件,从而控制查询结果中哪些组可以出现在最终结果里面,它的作用和WHERE子句相似,不同的是WHERE子句是对被选择的列施加条件,而HAVING子句则是对GROUP BY子句所产生的组施加条件
  基本语法如下所示:

SELECT column1, column2
FROM table1, table2
WHERE [ conditions ]
GROUP BY column1, column2
HAVING [ conditions ]
ORDER BY column1, column2

  注意: HAVING子句必须紧随GROUP BY子句,如果有ORDER BY子句的话HAVING子句必须在ORDER BY子句之前

2、示例

  首先我们来创建测试数据,代码如下:

CREATE TABLE student(
	s_id varchar(50) NOT NULL PRIMARY KEY,
	s_name varchar(50),
	s_gender varchar(50),
	s_age int
)

INSERT INTO student (s_id,s_name,s_gender,s_age) VALUES ('S101','Lucy','female',11);
INSERT INTO student (s_id,s_name,s_gender,s_age) VALUES ('S102','Jack','male',16);
INSERT INTO student (s_id,s_name,s_gender,s_age) VALUES ('S103','Bruce','male',18);
INSERT INTO student (s_id,s_name,s_gender,s_age) VALUES ('S104','Tom','male',14);
INSERT INTO student (s_id,s_name,s_gender,s_age) VALUES ('S105','Jayce','male',15);
INSERT INTO student (s_id,s_name,s_gender,s_age) VALUES ('S106','Jerry','female',14);

  上方的测试数据中共有6条数据,其中性别为女的条数有两条,性别为男的条数有四条,如果我们按性别来分组,它们会变为两组数据,现在我们将它们分组后筛选出记录条数大于3的看看是哪些组,它们有几条,代码如下:

SELECT COUNT(*) as '记录条数',s_gender
FROM student
GROUP BY s_gender
HAVING COUNT(*)>3;

  执行结果如下:
在这里插入图片描述
  由上述例子即可提现HAVING子句对分组结果进行过滤的作用,如结果有多条并需要排序时可在后面加上ORDER BY子句即可

发布了81 篇原创文章 · 获赞 36 · 访问量 3336

猜你喜欢

转载自blog.csdn.net/WXKKang/article/details/103906600