16、SQL 中分组过滤与多表连接的使用指南

SQL 中分组过滤与多表连接的使用指南

1. 使用 HAVING 子句过滤分组

HAVING 子句与 WHERE 子句类似,WHERE 子句用于筛选 SELECT 查询返回的行,而 HAVING 子句用于筛选 GROUP BY 子句生成的分组。HAVING 子句具有以下重要特性:
- HAVING 子句位于 GROUP BY 子句之后,ORDER BY 子句之前。
- 如同 WHERE 子句限制 SELECT 显示的行数,HAVING 子句限制 GROUP BY 显示的分组数。
- WHERE 搜索条件在分组操作之前应用,而 HAVING 搜索条件在分组操作之后应用。
- HAVING 语法与 WHERE 语法相似,但 HAVING 可以包含聚合函数。
- HAVING 子句可以引用 SELECT 列表中出现的任何项目。

WHERE、GROUP BY 和 HAVING 子句的应用顺序如下:
1. WHERE 子句过滤 FROM 和 JOIN 子句指定操作产生的行。
2. GROUP BY 子句对 WHERE 子句的输出进行分组。
3. HAVING 子句从分组结果中过滤行。

以下是一些使用 HAVING 子句的示例:
- 示例 1:列出撰写三本或更多书籍的作者及其撰写书籍的数量

SELECT 
    au_id,
    COUNT(*) AS "num_books"
FROM title_authors
GROUP BY au_id
HAVING COUNT(*) >=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值