SQLHAVING使用详解.doc_第1页
SQLHAVING使用详解.doc_第2页
SQLHAVING使用详解.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SQL HAVING用法详解HAVING 子句对 GROUP BY 子句设置条件的方式与 WHERE 和 SELECT 的交互方式类似。WHERE 搜索条件在进行分组操作之前应用;而 HAVING 搜索条件在进行分组操作之后应用。HAVING 语法与 WHERE 语法类似,但 HAVING 可以包含聚合函数。HAVING 子句可以引用选择列表中显示的任意项。下面的示例按产品 ID 对 SalesOrderDetail 进行了分组,并且只包含那些订单合计大于 $1,000,000 且其平均订单数量小于 3 的产品组。USE AdventureWorks;GOSELECT ProductID, AVG(OrderQty) AS AverageQuantity, SUM(LineTotal) AS TotalFROM Sales.SalesOrderDetailGROUP BY ProductIDHAVING SUM(LineTotal) $1000000.00AND AVG(OrderQty) $2000000.00 ;GO下面是结果集: ProductID Total- -781 3864606.54937208969 2010943.97244001793 2897478.01200001784 3699803.72383008780 3880441.60780208976 2079038.42948795 2268057.09000002783 4548164.01783709779 4170215.3849281782 50329682679200.01336002753 2006264.4236(12 row(s) affected)若要确保对每种产品的计算中至少包含 1500 项,请使用 HAVING COUNT(*) 1500 消除返回的销售总数小于 1500 项的产品。该查询类似于下面的示例:USE AdventureWorks;GOSELECT ProductID, SUM(LineTotal) AS TotalFROM Sales.SalesOrderDetailGROUP BY ProductIDHAVING COUNT(*) 1500 ;GO理解应用 WHERE、GROUP BY 和 HAVING 子句的正确顺序对编写高效的查询代码会有所帮助: WHERE 子句用来筛选 FROM 子句中指定的操作所产生的行。 GROUP BY 子句用来分组 WHERE 子句的输出。 HAVING 子句用来从分组的结果中筛选行。 对于可以在分组操作之前或之后应用的任何搜索条件,在 WHERE 子句中指定它们会更有效。这样可以减少必须分组的行数。应当在 HAVING 子句中指定的搜索条件只是那些必须在执行分组操作之后应用的搜索条件。Microsoft SQL Server 2005 查询优化器可以处理这些条件中的大多数条件。如果查询优化器确定 HAVING 搜索条件可以在分组操作之前应用,那么它就会在分组之前应用。查询优化器可能无法识别所有可以在分组操作之前应用的 HAVING 搜索条件。建议将所有这些搜索条件放在 WHERE 子句中,而不是 HAVING 子句中。下面的示例显示了带有聚合函数的 HAVING 子句。它按产品 ID 分组 SalesOrderDetail 表中的行,并消除其平均订单数量小于/等于 5 的产品。USE AdventureWorks;GOSELECT ProductID FROM Sales.SalesOrderDetailGROUP BY ProductIDHAVING AVG(OrderQty) 5ORDER BY ProductID ;GO下面的示例显示了不带聚合函数的 HAVING 子句。它按名称分组 ProductModel 表中的行,并消除那些不以 Mountain 开头的名称。USE AdventureWorks;GOSELECT pm.Name, AVG(ListPrice) AS Average List PriceFROM Production.Product AS pJOIN Production.ProductModel AS pmON p.ProductModelID = pm.ProductModelIDGROUP

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论