聚合函数和分组查询

来源:互联网 发布:58淘宝美工学徒新骗局 编辑:程序博客网 时间:2024/05/16 10:45

常用的聚合函数

1:   AVG(DISTINCT|ALL)ALL表示对所有的值求平均值,DISTINCT只对不同的值求平均值SELECT AVG(SAL) FROM 表名;SELECT AVG(DISTINCT SAL) FROM 表名;2:   MAX(DISTINCT|ALL)求最大值,ALL表示对所有的值求最大值,DISTINCT表示对不同的值求最大值,相同的只取一次(加不加查询结果一致,不知DISTINCT有什么用途,不同于AVG等聚合函数)SELECT MAX(DISTINCT SAL) FROM 表名;SELECT MAX(SAL) FROM 表名3:   MIN(DISTINCT|ALL)求最小值,ALL表示对所有的值求最小值,DISTINCT表示对不同的值求最小值,相同的只取一次SELECT MIN(SAL) FROM 表名;SELECT MIN(DISTINCT SAL) FROM 表名;4:  STDDEV(distinct|all)求标准差,ALL表示对所有的值求标准差,DISTINCT表示只对不同的值求标准差SELECT STDDEV(SAL) FROM 表名;SELECT STDDEV(DISTINCT SAL) FROM 表名;5:   VARIANCE(DISTINCT|ALL)求协方差  ALL表示对所有的值求协方差,DISTINCT表示只对不同的值求协方差SELECT VARIANCE(SAL) FROM 表名;SELECT VARIANCE(DISTINCT SAL) FROM 表名;6:  SUM(DISTINCT|ALL)求和  ALL表示对所有值求和,DISTINCT表示只对不同值求和(相同值只取一次)SELECT SUM(SAL) FROM 表名;SELECT SUM(DISTINCT SAL) FROM 表名;7:COUNT(DISTINCT|ALL)求记录、数据个数。 ALL对所有记录,数组做统计, DISTINCT只对不同值统计(相同值只取一次)SELECT COUNT(SAL) FROM 表名;SELECT COUNT(DISTINCT SAL) FROM 表名;  

GROUP BY 子句

 1. 出现在 SELECT 列表中的字段或者出现在 order by 后面的字段,如果不是包含在分组函数中,那么该字段必须同时在 GROUP BY 子句中出现 2. 包含在 GROUP BY 子句中的字段则不必须出现在 SELECT 列表中 可使用 where 字句限定查询条件 可使用 Order by 子句指定排序方式 3. 如果没有 GROUP BY 子句, SELECT 列表中不允许出现字段(单行函数)与分组函数混用的情况

HAVING 子句

select deptno, job, avg(sal)from empwhere hiredate >= to_date('1981-05-01','yyyy-mm-dd')   -- 先过滤emp里面的数据 再去分组group by deptno,job                                    -- where 之后进行分组 having avg(sal) > 1200                                 -- 分组之后再过滤order by deptno,job;                                   --最后select之后进行排序

ORDER BY 字句

select     字段1,     字段2,     .......from 表名order by  字段1, 字段2             --先看 字段1的顺序,相同的 字段1 然后再看 字段2