首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
安装 PostgreSQL
PostgreSQL 语法
PostgreSQL 创建数据库
PostgreSQL 选择数据库
PostgreSQL 删除数据库
PostgreSQL 创建数据表
PostgreSQL 删除数据表
PostgreSQL 模式
PostgreSQL INSERT INTO 语句
PostgreSQL SELECT 语句
PostgreSQL 表达式
PostgreSQL WHERE 子句
PostgreSQL AND & OR 运算符
PostgreSQL UPDATE 语句
PostgreSQL DELETE 语句
PostgreSQL LIKE 子句
PostgreSQL LIMIT 子句
PostgreSQL ORDER BY 语句
PostgreSQL GROUP BY 语句
PostgreSQL WITH 子句
PostgreSQL HAVING 子句
PostgreSQL DISTINCT 关键字
PostgreSQL 连接(JOIN)
当前位置:
首页>>
技术小册>>
PostgreSQL入门教程
小册名称:PostgreSQL入门教程
HAVING 子句可以让我们筛选分组后的各组数据。 WHERE 子句在所选列上设置条件,而 HAVING 子句则在由 GROUP BY 子句创建的分组上设置条件。 语法 下面是 HAVING 子句在 SELECT 查询中的位置: ``` SELECT FROM WHERE GROUP BY HAVING ORDER BY ``` HAVING 子句必须放置于 GROUP BY 子句后面,ORDER BY 子句前面,下面是 HAVING 子句在 SELECT 语句中基础语法: ``` SELECT column1, column2 FROM table1, table2 WHERE [ conditions ] GROUP BY column1, column2 HAVING [ conditions ] ORDER BY column1, column2 ``` 实例 创建 COMPANY 表(下载 COMPANY SQL 文件 ),数据内容如下: ``` maxiaokedb# select * from COMPANY; ``` ``` id | name | age | address | salary ----+-------+-----+-----------+-------- 1 | Paul | 32 | California| 20000 2 | Allen | 25 | Texas | 15000 3 | Teddy | 23 | Norway | 20000 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | Texas | 85000 6 | Kim | 22 | South-Hall| 45000 7 | James | 24 | Houston | 10000 (7 rows) ``` 下面实例将找出根据 NAME 字段值进行分组,并且 name(名称) 字段的计数少于 2 数据: ``` SELECT NAME FROM COMPANY GROUP BY name HAVING count(name) < 2; ``` 得到以下结果: ``` name ------- Teddy Paul Mark David Allen Kim James (7 rows) ``` 我们往表里添加几条数据: ``` INSERT INTO COMPANY VALUES (8, 'Paul', 24, 'Houston', 20000.00); INSERT INTO COMPANY VALUES (9, 'James', 44, 'Norway', 5000.00); INSERT INTO COMPANY VALUES (10, 'James', 45, 'Texas', 5000.00); ``` 此时,COMPANY 表的记录如下: ``` id | name | age | address | salary ----+-------+-----+--------------+-------- 1 | Paul | 32 | California | 20000 2 | Allen | 25 | Texas | 15000 3 | Teddy | 23 | Norway | 20000 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | Texas | 85000 6 | Kim | 22 | South-Hall | 45000 7 | James | 24 | Houston | 10000 8 | Paul | 24 | Houston | 20000 9 | James | 44 | Norway | 5000 10 | James | 45 | Texas | 5000 (10 rows) ``` 下面实例将找出根据 name 字段值进行分组,并且名称的计数大于 1 数据: ``` maxiaokedb-# SELECT NAME FROM COMPANY GROUP BY name HAVING count(name) > 1; ``` 得到结果如下: ``` name ------- Paul James (2 rows) ```
上一篇:
PostgreSQL WITH 子句
下一篇:
PostgreSQL DISTINCT 关键字
该分类下的相关小册推荐:
SQL基础教程(上)
SQL基础教程(中)
SQL基础教程(下)
高性能的Postgres SQL