欢迎来到天天文库
浏览记录
ID:51691702
大小:37.95 KB
页数:4页
时间:2020-03-15
《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
此文档下载收益归作者所有