接下来讲到的子句有:

  WHERE

  STARTING WITH

  ORDER BY

  GROUP BY

  HAVING

WHERE: 使用频率仅次于SELECT和FROM

STARTING WITH: 附加于WHERE子句上,作用于LIKE(exp%)相似

  SELECT PAYEE,AMOUNT,REMARKS FROM CHECKS WHERE PAYEE LIKE('Ca%');

  SELECT PAYEE,AMOUNT,REMARKS FROM CHECKS WHERE PAYEE STARTING WITH('Ca%');

ORDER BY: 提供了对输出的结果进行排序的方法。ORDER BY DESC表示降序排列来代替默认的升序排列,ASC按升序排列

  

  

  按CHECK#列排序:SELECT * FROM CHECKS ORDER BY CHECK#;

    等价于:SELECT * FROM CHECKS ORDER BY 1; 用第一列进行排序

  按PAYEE降序排列:SELECT * FROM CHECKS ORDER BY PAYEE DESC;

  ORDER BY可以使用多个字段,按PAYEE和REMARKS进行排序:

    SELECT * FROM CHECKS ORDER BY PAYEE,REMARKS;

  第一列按字母的正顺排列,第二列按字母的逆序排列:

    SELECT * FROM CHECKS ORDER BY PAYEE ASC,REMARKS DESC;

GROUP BY: 分组,当要求分组结果返回多个数值时不能再在SELECT子句中使用除分组列以外的列,否则会导致错误的返回值。

  每一个PAYEE的总花费:SELECT PAYEE,SUM(AMOUNT) FROM CHECKS GROUP BY PAYEE;对SELECT结果进行分组后再应用汇总函数

  SELECT PAYEE,SUM(AMOUNT),COUNT(PAYEE) FROM CHECKS GROUP BY PAYEE;

HAVING: 允许将汇总条件作为结果,也可以使用多个汇总条件。

  

  对输出的结果进行分组,并显示每一组的平均工资:SELECT TEAM,AVG(SALARY) FROM ORGCHART BROUP BY TEAM;

  返回分组后平均工资少于38000的组:

    SELECT TEAM,AVG(SALARY) FROM ORGCHART WHERE AVG(SALARY) < 38000 BROUP BY TEAM;

    上边的写法是错的,由于汇总函数不能工作在WHERE子句中,所以只能使用

    SELECT TEAM,AVG(SALARY) FROM ORGCHART GROUP BY TEAM HAVING AVG(SALARY)<380000;

  可以使用多个汇总条件,按TEAM进行分组并符合平均病假大于25天和平均年假少于20天的组:

    SELECT TEAM,AVG(SICKLEAVE),AVG(ANNUALLEAVE) FROM ORGCHART GROUP BY TEAM HAVING AVG(SICKLEAVE)>25 AND AVG(ANNUALLEAVE)<20;

  可以在HAVING中使用在SELECT中没有指出的字段进行汇总,返回组中成员大于1的组:

    SELECT TEAM,AVG(SICKLEAVE),AVG(ANNUALLEAVE) FROM ORGCHART GROUP BY TEAM HAVING COUNT(TEAM) >1;

  在HAVING中可以使用其他的逻辑操作符:

    SELECT TEAM,MIN(SALARY),MAX(SALARY) FROM ORGCHART GROUP BY TEAM HAVING AVG(SALARY)>37000 AND MIN(SALARY)>32000;

子句的综合应用

SQL_5_子句的更多相关文章

  1. SQL Server中TOP子句可能导致的问题以及解决办法

    简介      在SQL Server中,针对复杂查询使用TOP子句可能会出现对性能的影响,这种影响可能是好的影响,也可能是坏的影响,针对不同的情况有不同的可能性.      关系数据库中SQL语句只 ...

  2. 理解OVER子句

    简介 Over子句在SQLServer 2005中回归,并且在2012中得到了扩展.这个功能主要结合窗口函数来使用:也可以在序列函数"NEXT VALUE FOR"使用.OVER子 ...

  3. OutPut子句的使用限制

    Output子句很方便,多数情况下可以省略了更新后插入或者删除后插入操作表,将2个语句变成1个语句操作.不管从语句美观还是效率上都是有不错的提升, 但是对于Output自身,也是有一些限制的. 从文档 ...

  4. MySql in子句 效率低下优化

    MySql in子句 效率低下优化 背景: 更新一张表中的某些记录值,更新条件来自另一张含有200多万记录的表,效率极其低下,耗时高达几分钟. where resid in ( ); 耗时 365s ...

  5. grouping sets从属子句的运用

    grouping sets主要是用来合并多个分组的结果. 对于员工目标业绩表'businessTarget': employeeId targetDate idealDistAmount 如果需要分别 ...

  6. TSQL Merge On子句和When not matched 语义理解

    Merge 的On子句指定Match condition,When子句指定过滤条件,如果Source Table和Targe Table匹配的上,很好理解:如果匹配不上,必须深入理解不匹配的条件,否则 ...

  7. SQL TOP 子句、SQL LIKE 操作符、SQL 通配符

    TOP 子句 TOP 子句用于规定要返回的记录的数目. 对于拥有数千条记录的大型表来说,TOP 子句是非常有用的. 注释:并非所有的数据库系统都支持 TOP 子句. SQL Server 的语法: S ...

  8. 关于在left join的on子句中限制左边表的取值时出现非期望的结果

    使用的SQL大概是这样的: select * from A left join B on A.id=B.id and A.id>10; --错误的使用 我们期望的结果集应该是 A中的id> ...

  9. Java throws子句是怎么写的呢?

    如果一个方法可以导致一个异常但不处理它,它必须指定这种行为以使方法的调用者可以保护它们自己而不发生异常.做到这点你可以在方法声明中包含一个throws子句.一个 throws 子句列举了一个方法可能抛 ...

随机推荐

  1. JAVA基础之File类

    个人理解: File是个文件类,可以用其增加.删除.查找某种类型的文件或者文件夹,同时根据其成员变量的特点可以综合利用,避免出现跨系统的时候出现错误,并且查找时最好输入绝对路径,以免出现不存在的文件. ...

  2. linux 环境下备份oracle 数据库

    登陆linux后,进入oracle的安装目录下,找到bin那个目录,进入bin目录ls -l 看这些命令的所有者: su - oracle这时会进入这个用户的主目录/home/oracle,此时,可以 ...

  3. dedecms会员中心编辑器无法上传图片

    文件:include\dialog\config.php 找到这行代码: $cuserLogin = new userLogin(); 把上面代码下面的这些注释掉: if($cuserLogin-&g ...

  4. 【extjs6学习笔记】Mastering Ext JS, 2nd Edition

    我不知道在别人看来,我是什么样的人:但在我自己看来,我不过就象是一个在海滨玩耍的小孩,为不时发现比寻常更为光滑的一块卵石或比寻常更为美丽的一片贝壳而沾沾自喜,而对于展现在我面前的浩瀚的真理的海洋,却全 ...

  5. django之模版的自定义函数

    - 自定义函数 simple_tag a. app下创建templatetags目录 b. 任意xxoo.py文件 c. 创建template对象 register d. __author__ = ' ...

  6. Eclipse IDE配置PHP开发、调试环境

    前言 使用java语言开发的朋友想必对Eclipse开发工具已经不陌生了,那么Eclipse作为java主流的开发工具,是否能够开发PHP项目呢?答案如你所想,肯定是可以的!以下就是该IDE下如何配置 ...

  7. Java 反射机制(一)

    阅读<Core Java Volume I --- Fundamentals>反射部分,总觉得许多概念艰涩难懂.模棱两可.我想造成这个结果的主要原因可能是Cay S. Horstmann和 ...

  8. shell函数的使用

    shell函数的使用比较简单,要点包括定义.参数来源.返回值: 在shell函数里,结合read命令,可以实现在执行脚本的过程中让用户选择参数,增强脚本的交互性: 脚本参数在脚本名称后面输入,函数参数 ...

  9. Python + selenium之unitest(1)

    单元测试负责对最小的软件设计单元(模块)进行验证,它使用软件设计文档中对模块的描述作为指南,对重要的程序进行测试以发现模块中的错误. 下面演示不用测试框架的单元测试: # 计算器类 class Cou ...

  10. Android(java)学习笔记130:Android中操作XML数据(使用Pull解析器)

    1. Pull解析器的运行方式与 SAX 解析器相似.它提供了类似的事件,如:开始元素和结束元素事件,使用parser.next()可以进入下一个元素并触发相应事件.跟SAX不同的是, Pull解析器 ...