Java知识点整理

排序与聚合函数

2018-01-18  本文已影响0人  程序员必修课

排序

ORDER BY

SELECT <*, column [alias], ...>
FROM table [WHERE conditions(s)]
[ORDER BY column [ASC|DESC]];
必须出现在SELECT中的最后一个子句

ASC、DESC

ASC用来指定升序排序(默认选项),DESC用来指定降序排序。
NULL值视作最大。
不写ASC或DESC ,默认是ASC,升序排列。

多个列排序

当以多列作为排序标准时,首先按照第一列进行排序,如果第一列数据相同,再以第二列排序,以此类推。多列排序时,不管正序还是倒序,每个列需要单独设置排序方式

聚合函数

MAX、MIN

用来取得列或表达式的最大、最小值。
可以用来统计任何数据类型,包括数字、字符和日期;

AVG、SUM

用来统计列或表达式的平均值与和值。只能操作数字类型。忽略NULL值

在SELECT中出现了聚合函数以后,不可以出现其他字段,如果想出现其他字段,则该字段必须出现在GROUP BY语句中

COUNT

用来计算表中的记录条数;
忽略NULL值;

通过聚合函数统计某一字段值的时候,如果不希望忽略null,则使用NVL(IFNULL)语句

GROUP BY

将某些字段相同的划分为一组。
SELECT <*, column [alias],...">
FROM table [WHERE condition(s)]
[GROUP BY group_by_expression]
[HAVING group_condition]
[ORDER BY column [ASC | DESC]];

GROUP BY应该出现在WHERE后面,ORDER BY前面。

WHERE中不允许使用分组函数

HAVING

HAVING子句用来对分组统计后的结果再次进行过滤。比如按部门分组后,得到每个部门的最高薪水,可以继续限制输出结果。
必须跟在GROUP BY后面,不能单独存在。

WHERE是在第一次查询时用来过滤的,WHERE不能用组函数,HAVING可以

査询语句的执行顺序

  1. from子句:执行顺序为从后往前、从右到左;所以数据量较少的表尽量放在后面
  2. where子句:执行顺序为自下而上、从右到左;将能过滤掉最大数量记录的条件,写在Where子句的最右
  3. group by:执行顺序从左往右分组;最好在GROUP BY前使用WHERE将不需要的记录在GROUP BY之前过滤掉。列内容都不重复用GROUP by意义就不大了。
  4. having子句:消耗资源,尽置避免使用,HAVING会搜索出所有记录之后才对结果集进行过滤,需要排序等操作
  5. select子句:少用★号,尽量取字段名称;ORACLE在解析的过程中,通过査询数据字典将*号依次转换成所有的列名,消耗时间
  6. order by子句:执行顺序为从左到右排序,消耗资源
上一篇 下一篇

猜你喜欢

热点阅读