JAVA
变量的作用域和生存期:
变量的作用域:
作用域从变量定义的位置开始,到该变量所在的那对大括号结束;
生命周期:
变量从定义的位置开始就在内存中活了;
变量到达它所在的作用域的时候就在内存中消失了;
数 组:
用于存储同一类型数据的一个容器。好处:可以对该容器中的数据进行编号,从0开始。数组用于封装数据,就是一个具体的实体。
定义数组的两种方式。
1)、元素类型[] 变量名 = new 元素类型[元素的个数];
2)、元素类型[] 变量名 = {元素1,元素2...};
元素类型[] 变量名 = new 元素类型[]{元素1,元素2...};
冒泡排序:
每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。
算法:
public static void main(String[] args) {
//为冒泡排序 从小到大进行排序
intas[] = {1,25,4,68,102,8,99,97};
for(inti=0;i<as.length-1;i++){
for(intj=0;j<as.length-1-i;j++){
if(as[j]>as[j+1]){
//交换 as[j] 和 as[j+1]的值
inttemp = as[j];
as[j]= as[j+1];
as[j+1]= temp;
}
}
}
//打印数组
for(inti = 0 ; i<as.length;i++){
System.out.println(as[i]);
}
选择排序
在要排序的一组数中,选出最小的一个数与第一个位置的数交换;
然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止
算法:
int ass[] = {200,1,25,4,68,102,8,99,97};
for(inti=0;i<ass.length;i++){
//因为已经排序过的数字不参与排序所以为j=i+1
for(intj=i+1;j<ass.length;j++){
if(ass[i]>ass[j]){
inttemp = ass[i];
ass[i]= ass[j];
ass[j]= temp;
}
}
}
for(inti = 0; i<ass.length;i++){
System.out.println(ass[i]);
}
}
}
Oracle
聚合函数
聚合函数:一组值进行计算,并返回计算后的值,具有统计数据的作用。分组函数会自动忽略空值。
sum
语法:sum(distinct|all)
参数:all表示对所有的值 (缺省),distinct只对不同的值
解释:求总和
示例:
select sum(distinct sal) from emp;
select sum(all sal) from emp;
avg
语法:avg(distinct|all)
参数:all表示对所有的值 (缺省),distinct只对不同的值
解释:求平均值
示例:
select avg(distinct sal) from emp;
select avg(all sal) from emp;
max
语法:max(distinct|all)
参数:all表示对所有的值 (缺省),distinct只对不同的值
解释:求最大值
示例:
select max(distinct sal) from emp;
min
语法:min(distinct|all)
参数:all表示对所有的值 (缺省),distinct只对不同的值
解释:求最小值
示例:
select min(all sal) from emp;
count
语法:count(distinct|all)
参数:all表示对所有的值 (缺省),distinct只对不同的值(相同值只取一次)
解释:求记录、数据个数。
示例:
select count(sal) from emp;
select count(distinct sal) from emp;
分组查询
在实际SQL应用中,经常需要进行分组聚合,即将查询对象按一定条件分组,然后对每一个组进行聚合分析。创建分组是通过GROUP BY子句实现的。与WHERE子句不同,GROUP BY子句用于归纳信息类型,以汇总相关数据。GROUP BY的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理。
group by
语法:select 字段名,聚合函数()
from 表名
group by 字段名;
解释:主要用来对一组数进行统计
示例:
求每个部门的平均工资,要求显示:部门号,部门的平均工资
select deptno ,avg(sal) from emp group by deptno;
说明:
在使用groupby关键字时,在select列表中可以指定的项目是有限制的,select语句中仅许以下几项:
(1)被分组的列
(2)为每个分组返回一个值得表达式,例如用一个列名作为参数的聚合函数
group by 有一个原则,就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面。
当GROUPBY子句中用于分组的列中出现NULL值时,将所有的NULL值分在同一组,即认为它们是“相等”的。
having
语法:SELECT column,SUM(column)
FROM table
GROUP BYcolumn
HAVING SUM(column)condition value
解释:
对分组统计再加限制条件进行筛选
示例:
select deptno,count(*),sum(sal)
from emp
group by deptno
having count(*)>=5;
说明:HAVING通常与GROUP BY子句同时使用。当然sum()也可以是其他聚合函数。
HAVING子句与WHERE子句的区别
having子句和where子句的相似之处在于,它也定义搜索条件。都是对查询结果的一种筛选。不同之处在于:
1、 where不能跟在group by子句后面,having是跟group by子句一起连用的,跟在其后面。
2、where条件中不能有聚合函数,而having可以有。
3、where子句只能接收from子句输出的数据,对其进行筛选;having对使用group by进行分组统计后的结果进行进一步的筛选。
语句执行顺序
select列 from 表列表名/视图列表名
where 条件
groupby (列)
having条件
orderby 列列表
执行顺序:
先where 再group 再having 再select 后order