1.AVG(DISTINCT|ALL)
all表示对所有的值求平均值,distinct只对不同的值求平均值
SQLWKS> create table table3(xm varchar(8),sal number(7,2));
语句已处理。
SQLWKS>
SQLWKS>
SQLWKS>
SQLWKS> commit;
SQL> select avg(distinct sal) from gao.table3;
AVG(DISTINCTSAL)
----------------
SQL> select avg(all sal) from gao.table3;
AVG(ALLSAL)
-----------
2.MAX(DISTINCT|ALL)
求最大值,ALL表示对所有的值求最大值,DISTINCT表示对不同的值求最大值,相同的只取一次
SQL> select max(distinct sal) from scott.emp;
MAX(DISTINCTSAL)
----------------
3.MIN(DISTINCT|ALL)
求最小值,ALL表示对所有的值求最小值,DISTINCT表示对不同的值求最小值,相同的只取一次
SQL> select min(all sal) from gao.table3;
MIN(ALLSAL)
-----------
4.STDDEV(distinct|all)
求标准差,ALL表示对所有的值求标准差,DISTINCT表示只对不同的值求标准差
SQL> select stddev(sal) from scott.emp;
STDDEV(SAL)
-----------
SQL> select stddev(distinct sal) from scott.emp;
STDDEV(DISTINCTSAL)
-------------------
5.VARIANCE(DISTINCT|ALL)
求协方差
SQL> select variance(sal) from scott.emp;
VARIANCE(SAL)
-------------
6.GROUP BY
主要用来对一组数进行统计
SQL> select deptno,count(*),sum(sal) from scott.emp group by deptno;
--------- --------- ---------
7.HAVING
对分组统计再加限制条件
SQL> select deptno,count(*),sum(sal) from scott.emp group by deptno having count(*)>=5;
--------- --------- ---------
SQL> select deptno,count(*),sum(sal) from scott.emp having count(*)>=5 group by deptno ;
--------- --------- ---------
8.ORDER BY
用于对查询到的结果进行排序输出
SQL> select deptno,ename,sal from scott.emp order by deptno,sal desc;
--------- ---------- ---------
9.中位数
a.计算一列数字值的中间值(中间值就是一组有序元素中间成员的值)。例如,查找DEPTNO 20中工资的中间数。如下列工资:
select sal
where deptno = 20
order by sal
----------
中间数为2975。
b.使用函数MEDIAN(Oracle Database 10g)或PERCENTILE_CONT(Oracle9i Database):
10.众数
a.准备数据
select * from tb
张三 语文 74
张三 数学 83
张三 物理 93
李四 语文 74
李四 数学 93
刘洋 语文 81
刘洋 数学 82、
刘洋 物理 86
--首先构造CTE
with tbGroup as (select xm,count(*) total from tb group by xm)
--找出具有最大值的所有记录(即众数)
方法一:select * from tbGroup where total={select max(total) from tbGroup}求各组类的最大值
显示结果:张三
方法二:select * from (select xm,total,dense_rank() over(order by total desc)mc from tbGroup)t where mc=1;
显示结果:张三
即改组中有两个众数。注意:一组数可能没有众数!此时CTE将返回空集。