1.在数据库中having函数在实际开发中可能用的几率不太大,但是它能大大节约我们的开发,优化sql脚本。

首先介绍一下having是什么,它的实际开发场景有哪些?

答:having是常跟在group by分组函数后面进行使用的,它出现的原因就是WHERE 关键字无法与合计函数一起使用。

having是与分组函数一起来使用的。对由sum或其它集合函数运算结果的输出进行限制。它是为了进一步强化过滤条件进行的,为了解决某些where关键字而不能解决的问题,最能说明它与where不同的是它能对聚合函数(SUM,AVG,MAX........等)进行过滤,其实你说难道对聚合以后的数据一定要使用having吗,其实也未必,使用having只是快速开发而已,用其他的也能实现同样的效果。比如在一个sql语句中我们使用了分组函数。
例如:求某班平均成绩大于60分同学的学号,姓名。
当我们碰到这种sql时,首先想到的就是使用分组函数对全班同学进行分组,然后利用聚合函数对成绩进行聚合,并在group by后面使用having进行过滤。
①SELECT * FROM 成绩表 group by 学号 having avg(成绩)>60.
大概就是这种写法会实现这种需求,如果不这样写的话也可以,就是不使用having,当对全班同学进行分组后,然后利用子查询并对这个分组后的临时表进行过滤,
②select * from(select 学号,avg(成绩) course FROM 成绩表 group by 学号)t where t.course>60
这种写法无非也是一种方法,但本人感觉两者其实大同小异,给其他人看来用having脚本显的更牛逼,第二种就是一个很正常的子查询了,没有什么可说的。比较好理解。至于用哪种方法,取决于个人。推荐用having这种,毕竟Oracle数据库有这种方法,何必不用呢?
③例子3:
在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。
having是与分组函数一起来使用的。对由sum或其它集合函数运算结果的输出进行限制。
比如,我们可能只希望看到Store_Information数据表中销售总额超过1500美圆的商店的信
息,这时我们就需要使用HAVING从句。语法格式为:
SELECT "column_name1", SUM("column_name2")
FROM "table_name"
GROUP BY "column_name1"
HAVING (arithematic function condition)
(GROUP BY从句可选)
由此,我们可以使用如下命令实现上述查询目的:
SELECT store_name, SUM(sales)
FROM Store_Information
GROUP BY store_name
HAVING SUM(sales) > 1500
查询结果显示为:
store_name SUM(Sales)
Los Angeles $1800
小注:
SQL语言中设定集合函数的查询条件时使用HAVING从句而不是WHERE从句。通常情况下,HAVING从句被放置在SQL命令的结尾处。
SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name HAVING aggregate_function(column_name) operator value
现在,我们希望查找订单总金额少于 2000 的客户。
我们使用如下 SQL 语句:
SELECT Customer,SUM(OrderPrice) FROM Orders GROUP BY Customer HAVING SUM(OrderPrice)<2000
现在我们希望查找客户 "Bush" 或 "Adams" 拥有超过 1500 的订单总金额。
我们在 SQL 语句中增加了一个普通的 WHERE 子句:
SELECT Customer,SUM(OrderPrice) FROM Orders WHERE Customer='Bush' OR Customer='Adams' GROUP BY Customer HAVING SUM(OrderPrice)>1500
2.in函数的用法。
如果说where 字段=?是一个值的话,那么in就替代了=是一堆值,在一堆值里面是:

IN函数有助于减少OR条件的复合使用。与OR。。。OR ...OR...OR...是一样的效果,它等同于OR..OR...OR的复合使用,在in里面的值都是或者关系的,在in(值1,值2,值3),出现的每一个值都会返回对应的这行记录条数。

Oracle中having函数和in函数的用法相关推荐

  1. 【转】Oracle 中的 TO_DATE 和 TO_CHAR 函数 日期处理

    Oracle 中的 TO_DATE 和 TO_CHAR 函数 oracle 中 TO_DATE 函数的时间格式,以 2008-09-10 23:45:56 为例 格式 说明 显示值 备注 Year(年 ...

  2. Oracle 中的 TO_DATE 和 TO_CHAR 函数 日期处理

    Oracle 中的 TO_DATE 和 TO_CHAR 函数 日期处理 Oracle 中的 TO_DATE 和 TO_CHAR 函数 oracle 中 TO_DATE 函数的时间格式,以 2008-0 ...

  3. mysql中sql语句中常见的group_concat()函数意思以及用法,oracle中与其一样的功能函数是wmsys.wm_concat()

    1.group_concat(),手册上说明:该函数返回带有来自一个组的连接的非NULL值的字符串结果.比较抽象,难以理解. 通俗点理解,其实是这样的:group_concat()会计算哪些行属于同一 ...

  4. oracle中获取当前时间的函数

    在 Oracle 中,你可以使用 SYSDATE 函数来获取当前时间. 例如: SELECT SYSDATE FROM DUAL; 这会在输出中显示当前时间. 你也可以使用 CURRENT_TIMES ...

  5. oracle中取反_oracle正则表达式regexp_like的用法详解

    oracle正则表达式regexp_like的用法详解 更新时间:2013年06月13日 17:42:05   作者: 本篇文章是对oracle正则表达式regexp_like的用法进行了详细的分析介 ...

  6. Oracle中start with...connect by prior子句用法

    http://www.cnblogs.com/ZHF/archive/2008/09/10/1288101.html Oracle中start with...connect by prior子句用法 ...

  7. Oracle中关于to_date(),to_char(),to_number()函数的用法

    一.Oracle中的to_date()函数 1.to_date()与24小时制表示法及mm分钟的显示: 在使用Oracle的to_date函数来做日期转换时,很多Java程序员也许会直接的采用&quo ...

  8. oracle中常使用到的函数,oracle中经常用到的函数

    最近学习oracle,在学习oracle函数时感觉网上千奇百怪的资源可读性太差,所以便拿来网络资源加以修改,并将其中的一起错误更正,因本人水平有限,有些地方可能还存在纰漏,还望各位前辈斧正. SQL中 ...

  9. Oracle中的排序和排序函数的使用

    参考地址:https://www.cnblogs.com/qiuting/p/7880500.html 前排提示,下面的实例用到的hr.employees表是Oracle11g的orcl实例自带的表空 ...

  10. oracle中的分隔函数,Oracle中的split字符串分割函数

    首先需要定义 2 个类型 1. Row 类型 CREATE OR REPLACE TYPE ty_row_str_split as object (strValue VARCHAR2 (4000)) ...

最新文章

  1. error LNK2001: unresolved external symbol _main
  2. sql update 日期减6个月_【干货】SQL基础快速入门
  3. 1cocos2dx扩展库UI控件,CCControlSlider,CCScale9Sprite(九妹图),CCControlSwitch,CCControlButton
  4. 解决hibernate双向关系造成的一方重复执行SQl,或者死循环的问题
  5. python调用ping命令_python调用系统命令ping
  6. sqlserver执行更新语句时出现异常,t 附近有语法错误
  7. 不要张口别人有问题,先看自己是否做错
  8. 新的默认设置:Sass颜色同义词库
  9. 计算机实验室安全知识心得体会,浅谈高校计算机实验室的安全管理
  10. 阿里云Hologres外部表的创建及使用
  11. 查看电脑的开关机记录
  12. perl学习(4) 子程序
  13. 百度搜索结果页面的参数 搜索框提示次数(rsv_sug1)
  14. 关于数字证书链的一点认知
  15. 腾讯视频会议真实内部实现分享
  16. android 多个catch,【Android开发坑系列】之try-catch
  17. 的统一,展现出更深远的思想,使读者领会更深的道理。 语言优美:所谓优美,就是指散文的语言清新明丽(也美丽
  18. Vue-router无刷新删除页面参数
  19. 基于Red Hat的Linux安装网易云音乐教程(openSUSE)
  20. 云里黑白第一回——华硕mbr机械硬盘迁移到m.2固态,3秒开机

热门文章

  1. VC++指定目录下文件按时间排序输出
  2. 转-游戏英雄属性数值的设计方法
  3. 《淘宝网开店 进货 运营 管理 客服 实战200招》——2.12 让宝贝卖高价的绝招...
  4. 暑期特别企划 | 快来接收 PingCAP Talent Plan 的小惊喜!
  5. 解决系统缺少api-ms-win-core-rtlsupport-l1-1-0.dll文件问题
  6. 基于Matlab的图像去噪算法仿真实现
  7. 卡尔曼滤波以后再经过低通滤波器_卡尔曼滤波:究竟滤了谁?
  8. 简单易学sa-token快速搭建——权限认证《一》
  9. Shape Reshape
  10. php多分支结构问题,php的一些新的分支结构以及include问题【include_path】