SQL_5_子句
接下来讲到的子句有:
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_子句的更多相关文章
- SQL Server中TOP子句可能导致的问题以及解决办法
简介 在SQL Server中,针对复杂查询使用TOP子句可能会出现对性能的影响,这种影响可能是好的影响,也可能是坏的影响,针对不同的情况有不同的可能性. 关系数据库中SQL语句只 ...
- 理解OVER子句
简介 Over子句在SQLServer 2005中回归,并且在2012中得到了扩展.这个功能主要结合窗口函数来使用:也可以在序列函数"NEXT VALUE FOR"使用.OVER子 ...
- OutPut子句的使用限制
Output子句很方便,多数情况下可以省略了更新后插入或者删除后插入操作表,将2个语句变成1个语句操作.不管从语句美观还是效率上都是有不错的提升, 但是对于Output自身,也是有一些限制的. 从文档 ...
- MySql in子句 效率低下优化
MySql in子句 效率低下优化 背景: 更新一张表中的某些记录值,更新条件来自另一张含有200多万记录的表,效率极其低下,耗时高达几分钟. where resid in ( ); 耗时 365s ...
- grouping sets从属子句的运用
grouping sets主要是用来合并多个分组的结果. 对于员工目标业绩表'businessTarget': employeeId targetDate idealDistAmount 如果需要分别 ...
- TSQL Merge On子句和When not matched 语义理解
Merge 的On子句指定Match condition,When子句指定过滤条件,如果Source Table和Targe Table匹配的上,很好理解:如果匹配不上,必须深入理解不匹配的条件,否则 ...
- SQL TOP 子句、SQL LIKE 操作符、SQL 通配符
TOP 子句 TOP 子句用于规定要返回的记录的数目. 对于拥有数千条记录的大型表来说,TOP 子句是非常有用的. 注释:并非所有的数据库系统都支持 TOP 子句. SQL Server 的语法: S ...
- 关于在left join的on子句中限制左边表的取值时出现非期望的结果
使用的SQL大概是这样的: select * from A left join B on A.id=B.id and A.id>10; --错误的使用 我们期望的结果集应该是 A中的id> ...
- Java throws子句是怎么写的呢?
如果一个方法可以导致一个异常但不处理它,它必须指定这种行为以使方法的调用者可以保护它们自己而不发生异常.做到这点你可以在方法声明中包含一个throws子句.一个 throws 子句列举了一个方法可能抛 ...
随机推荐
- linux debian 时间设置中无法选择“自动设定时间和日期”
没有安装ntpdate 执行:apt-get install ntpdate ntp.sjtu.edu.cn 202.120.2.101 (上海交通大学网络中心NTP服务器地址)s1a.time.ed ...
- 1068 乌龟棋 2010年NOIP全国联赛提高组
1068 乌龟棋 2010年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Descrip ...
- Delphi7使用二维码
参考:http://jingyan.baidu.com/article/e75057f2ad6481ebc81a897b.html 首先下载对应的 dll (已经上传到博客园文件) 然后就是Delph ...
- 简单案列完美搞定Mvc设计模式
一个小列子搞定Mvc模式,包括数据库以及如何提高用户体验度 1.首先来web.xml配置servlet的访问路径: <?xml version="1.0" encoding= ...
- Erlang程序设计(第2版)读书笔记(一)
正如<代码的未来>中所说,为了充分利用多核,并发变成将成为未来发展的趋势,对于并发编程的支持,Erlang确实是不二之选,Erlang在国内仍然较为小众,经典书籍相对也要少很多,最终选择了 ...
- codeforce Gym 100570B ShortestPath Query (最短路SPFA)
题意:询问单源最短路径,每条边有一个颜色,要求路径上相邻边的颜色不能相同,无重边且边权为正. 题解:因为路径的合法性和边的颜色有关, 所以在做spfa的时候,把边丢到队列中去,松弛的时候注意判断一下颜 ...
- coredata 关系的删除规则
http://blog.csdn.net/Hello_Hwc/article/details/46375517 关系的删除规则-Delete Rule Deny 关系的destination中只要有一 ...
- Linux 备份
备份之前的准备工作 安装常用的软件 常用软件的安装,见我另一篇blog Ubuntu 16.04 安装札记 的第四部分. 清理系统中没用的垃圾 至于垃圾清理,主要清理对象有 sudo rm -r ~/ ...
- Windows环境下使用Apache+mod
1.安装Python和Apache. 2.安装mod_wsgi后获得wsgi.so,并将wsgi.so放到Apache的modules文件夹下. 3.安装webpy. 4.打开httpd.conf(在 ...
- SQLSTATE=42000 #42000
在使用PowerDesigner生成数据库表的时候遇到了这个问题. 原来是在填写属性的类型的时候, 少了两个括号, 造成了mysql数据类型错误 本来应该是varchar(50)的,写成了varcha ...