HAVING 子句对 GROUP BY 子句设置条件的方式与 WHERE 和 SELECT 的交互方式类似。WHERE 搜索条件在进行分组操作之前应用;而HAVING 搜索条件在进行分组操作之后应用。HAVING 语法与 WHERE 语法类似,但 HAVING 可以包含聚合函数。HAVING 子句可以引用选择列表中显示的任意项。

下面的示例按产品 ID 对 SalesOrderDetail 进行了分组,并且只包含那些订单合计大于 $1,000,000 且其平均订单数量小于 3 的产品组。

USEAdventureWorks;

SELECT ProductID, AVG(OrderQty) AS AverageQuantity, SUM(LineTotal) ASTotalFROMSales.SalesOrderDetailGROUP BYProductIDHAVING SUM(LineTotal) > $1000000.00

AND AVG(OrderQty) < 3;

请注意,如果 HAVING 中包含多个条件,那么这些条件将通过 AND、OR 或 NOT 组合在一起。

若要查看总销量大于 $2,000,000 的产品,请使用下面的查询:

USEAdventureWorks;

SELECT ProductID, Total = SUM(LineTotal)FROMSales.SalesOrderDetailGROUP BYProductIDHAVING SUM(LineTotal) > $2000000.00;

下面是结果集:

ProductID Total----------- ----------------------

781 3864606.54937208

969 2010943.97244001

793 2897478.01200001

784 3699803.72383008

780 3880441.60780208

976 2079038.42948

795 2268057.09000002

783 4548164.01783709

779 4170215.3849281

782 5032968.13026809

794 2679200.01336002

753 2006264.4236(12 row(s) affected)

若要确保对每种产品的计算中至少包含 1500 项,请使用 HAVING COUNT(*) > 1500 消除返回的销售总数小于 1500 项的产品。该查询类似于下面的示例:

USEAdventureWorks;SELECT ProductID, SUM(LineTotal) ASTotalFROMSales.SalesOrderDetailGROUP BYProductIDHAVING COUNT(*) > 1500 ;

理解应用 WHERE、GROUP BY 和 HAVING 子句的正确顺序对编写高效的查询代码会有所帮助:

WHERE 子句用来筛选 FROM 子句中指定的操作所产生的行。

GROUP BY 子句用来分组 WHERE 子句的输出。

HAVING 子句用来从分组的结果中筛选行。

对于可以在分组操作之前或之后应用的任何搜索条件,在 WHERE 子句中指定它们会更有效。这样可以减少必须分组的行数。应当在 HAVING 子句中指定的搜索条件只是那些必须在执行分组操作之后应用的搜索条件。

如果查询优化器确定 HAVING 搜索条件可以在分组操作之前应用,那么它就会在分组之前应用。查询优化器可能无法识别所有可以在分组操作之前应用的 HAVING 搜索条件。建议将所有这些搜索条件放在 WHERE 子句中,而不是 HAVING 子句中。

下面的示例显示了带有聚合函数的 HAVING 子句。它按产品 ID 分组 SalesOrderDetail 表中的行,并消除其平均订单数量小于/等于 5 的产品。

USEAdventureWorks;SELECTProductIDFROMSales.SalesOrderDetailGROUP BYProductIDHAVING AVG(OrderQty) > 5

ORDER BY ProductID ;

下面的示例显示了不带聚合函数的 HAVING 子句。它按名称分组 ProductModel 表中的行,并消除那些不以 Mountain 开头的名称。

USEAdventureWorks;SELECT pm.Name, AVG(ListPrice) AS 'Average List Price'

FROM Production.Product ASpJOIN Production.ProductModel ASpmON p.ProductModelID =pm.ProductModelIDGROUP BYpm.NameHAVING pm.Name LIKE 'Mountain%'

ORDER BY pm.Name ;

请注意,ORDER BY 子句可用于排序 GROUP BY 子句的输出。

mysql having 最大_mysql系列五、mysql中having的用法相关推荐

  1. mysql外键_mysql系列之存储引擎

    本篇主要介绍mysql的存储引擎,说明主要的几个存储引擎的特性及其差别. 一.存储引擎介绍 在这里插入图片描述 数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建.查询.更新和删除 ...

  2. mysql 流复制_MySQL系列详解六:MySQL主从复制/半同步演示-技术流ken

    前言 随着技术的发展,在实际的生产环境中,由单台MySQL数据库服务器不能满足实际的需求.此时数据库集群就很好的解决了这个问题了.采用MySQL分布式集群,能够搭建一个高并发.负载均衡的集群服务器.在 ...

  3. mysql 性能日志_Mysql系列(十一)—— 性能分析慢查询日志

    慢查询日志概念 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志 ...

  4. mySQL危险命令_MYSQL教程Linux系统中最危险的10条命令

    <MYSQL教程Linux系统中最危险的10条命令>要点: 本文介绍了MYSQL教程Linux系统中最危险的10条命令,希望对您有用.如果有疑问,可以联系我们. Linux命令行佷有用.很 ...

  5. mysql limit 菜鸟_MySQL之二---MySQL菜鸟入门“秘籍”

    一.MySQL简介 1.什么是数据库 ? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不 ...

  6. mysql教程 api_Mysql入门系列:MySQL可用的API

    ; 5.1MySQL可用的API ; 为了方便应用程序的开发,MySQL提供了用C 编程语言编写的客户机库,它允许从任何C 程序的内部访问MySQL数据库.客户机库实现应用程序编程接口( A P I) ...

  7. mysql二进制方式_MySQL数据库之MySql二进制连接方式详解

    本文主要向大家介绍了MySQL数据库之MySql二进制连接方式详解 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 使用mysql二进制方式连接 您可以使用MySQL二进制方式进 ...

  8. mysql odbc 驱动_mysql odbc驱动 mysql odbc connector

    mysql odbc connector又名<mysql odbc驱动>,MySQL Connector ODBC是一个有效且实用的ODBC连接器,安装后它允许您将应用程序连接到MySQL ...

  9. elastic如何和mysql同步数据_MySQL数据库之mysql 同步数据到 ElasticSearch 的方案

    本文主要向大家介绍了MySQL数据库之mysql 同步数据到 ElasticSearch 的方案 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. MySQL Binlog 要通过 ...

最新文章

  1. xilinx windows 下烧录脚本 稳定性超好
  2. Vim - 容易忘记但又比较常用的操作 (之一)
  3. 微信分享转发功能「PHP版」
  4. 5G研发大幕开启 终端硝烟已燃
  5. 苹果11如何设置9宫格_4月9日三只可转债回落卖出条件单结果,10日永高转债上市,手把手教你如何设置华宝智投的涨跌幅条件单...
  6. python写一个自动登录脚本_Python 实现自动登录+点击+滑动验证功能
  7. python selenium自动化测试面试题_selenium 自动化测试面试题及答案
  8. mysql 配置root密码_Mysql安装与配置调优及修改root密码的方法
  9. MySQL表中插入中文数据时出错
  10. linux基于i2c-tools快速搭建设备读写环境
  11. 2023年CFA一级notesbook1+quicksheet(高清)
  12. 《密码编码学与网络安全》和《现代密码学》PDF
  13. 《实变函数简明教程》,P91,定理4.8(iii)(对等的可测函数同时可积或同时不可积)
  14. Java统一日志处理
  15. 如何显示和删除联想的OEM分区
  16. ad怎么修改栅格_AD 10怎么设置栅格?
  17. 两步解决macbook电池不充电
  18. ***pxj爱喝可乐***
  19. 监控视频压缩2—Block-Composed Background Reference for High Efficiency Video Coding
  20. 创业者能从猎豹移动身上取到哪些经?

热门文章

  1. vCenter密码过期策略修改
  2. 十六进制颜色 rgb颜色_轻松获取十六进制和RGB颜色代码
  3. [转] 如果亚伦·斯沃茨出生在中国
  4. 云计算是IT行业的集体炒作还是可以触摸的未来?
  5. HTC VIVE追踪器定位器
  6. 蓝桥杯 ALGO-189
  7. 怎么把位域合成一个字节_C51中位域在字节中的位置关系
  8. GSMA公布MWC19 巴塞罗那首批细节
  9. python爬去百度文库资料_python urllib爬取百度云连接的实例代码
  10. 【客服系统】在线客服系统源码外贸聊天通讯带翻译多语言支持网页安卓苹果打包封装APP