Oracle数据库having的使用.doc

Oracle数据库having的使用.doc

ID:51691702

大小:37.95 KB

页数:4页

时间:2020-03-15

Oracle数据库having的使用.doc_第1页
Oracle数据库having的使用.doc_第2页
Oracle数据库having的使用.doc_第3页
Oracle数据库having的使用.doc_第4页
资源描述:

《Oracle数据库having的使用.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、使用HAVING子句选择行  HAVING子句对GROUPBY子句设置条件的方式与WHERE子句和SELECT语句交互的方式类似。WHERE子句搜索条件在进行分组操作之前应用;而HAVING搜索条件在进行分组操作之后应用。HAVING语法与WHERE语法类似,但HAVING可以包含聚合函数。HAVING子句可以引用选择列表中出现的任意项。  下面的查询得到本年度截止到目前的销售额超过$40,000的出版商:  USEpubs  SELECTpub_id,total=SUM(ytd_sales)  FROMtitles  GROUPBYpub_id  HAVINGSU

2、M(ytd_sales)>40000  下面是结果集:  pub_idtotal  -----------------  087744219  (1row(s)affected)  为了确保对每个出版商的计算中至少包含六本书,下面示例使用HAVINGCOUNT(*)>5消除返回的总数小于六本书的出版商:  USEpubs  SELECTpub_id,total=SUM(ytd_sales)  FROMtitles  GROUPBYpub_id  HAVINGCOUNT(pub_id)>5  下面是结果集:  pub_idtotal  ----------------

3、-  087744219  138924941  (2row(s)affected)  理解应用WHERE、GROUPBY和HAVING子句的正确序列对编写高效的查询代码会有所帮助:  WHERE子句用来筛选FROM子句中指定的操作所产生的行。  GROUPBY子句用来分组WHERE子句的输出。  HAVING子句用来从分组的结果中筛选行。  对于可以在分组操作之前或之后应用的搜索条件,在WHERE子句中指定它们更有效。这样可以减少必须分组的行数。应当在HAVING子句中指定的搜索条件只是那些必须在执行分组操作之后应用的搜索条件。  Microsoft®SQ

4、LServer™2000查询优化器可处理这些条件中的大多数。如果查询优化器确定HAVING搜索条件可以在分组操作之前应用,那么它就会在分组之前应用。查询优化器可能无法识别所有可以在分组操作之前应用的HAVING搜索条件。建议将所有这些搜索条件放在WHERE子句中而不是HAVING子句中。  以下查询显示包含聚合函数的HAVING子句。该子句按类型分组titles表中的行,并且消除只包含一本书的组:  USEpubs  SELECTtype  FROMtitles  GROUPBYtype  HAVINGCOUNT(type)>1  下面是结果集:  type  --

5、----------------  business  mod_cook  popular_comp  psychology  trad_cook  (5row(s)affected)  以下是没有聚合函数的HAVING子句的示例。该子句按类型分组titles表中的行,并且消除不是以字母p开头的那些类型。  USEpubs  SELECTtype  FROMtitles  GROUPBYtype  HAVINGtype='%p%'  下面是结果集:  type  ------------------  popular_comp  psychology  (2row(

6、s)affected)  如果HAVING中包含多个条件,那么这些条件将通过AND、OR或NOT组合在一起。以下示例显示如何按出版商分组titles,只包括那些标识号大于0800、支付的总预付款已超过$15,000且销售书籍的平均价格小于$20的出版商。  SELECTpub_id,SUM(advance)ASAmountAdvanced,  AVG(price)ASAveragePrice  FROMpubs.dbo.titles  WHEREpub_id>'0800'  GROUPBYpub_id  HAVINGSUM(advance)>15000  ANDAV

7、G(price)<20  ORDERBY可以用来为GROUPBY子句的输出排序。下面的示例显示使用ORDERBY子句以定义返回GROUPBY子句中的行的顺序:  SELECTpub_id,SUM(advance)ASAmountAdvanced,  AVG(price)ASAveragePrice  FROMpubs.dbo.titles  WHEREpub_id>'0800'  ANDprice>=5  GROUPBYpub_id  HAVINGSUM(advance)>15000  ANDAVG(price)<20  ORDERBYpub_idDESC

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。