第六章分组函数课堂笔记和练习

本文详细介绍了SQL中的分组函数,包括SUM、MAX、MIN、AVG和COUNT,特别是它们对空值和重复行的处理。还讨论了DISTINCT在消除重复行中的作用,以及如何使用NVL函数处理空值。此外,文章阐述了GROUP BY子句和HAVING子句的使用,强调了在使用组函数时SELECT子句和GROUP BY子句的配合规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

– 分组函数

  • 常用的五个分组函数

    – min()最小值,max()最大值,所有类型

        select min(hiredate), max(hiredate) from emp;
        select min(sal), max(sal) from emp;
    

    – sum()总和,avg()平均值
    – SUM和AVG函数都是只能够对数值类型的列或表达式操作

        select sum(sal),avg(sal) from emp; --  avg排除null做计算
        select avg(nvl(comm, 0)) from emp;
    

    – count()统计符合条件的记录条数,不排除重复行
    – 除了count(*)之外,其它所有分组函数都会忽略列中的空
    -> 值,然后再进行计算

        select count(*) from emp where deptno = 30; --  任意数值
        select count(1) from emp where deptno = 30; -- 一个数值 
        select count(ename) from emp where deptno = 30; -- 列名  
    

    – 组函数中distinct
    – distinct会消除重复记录后再使用组函数
    – 查询有员工的部门数量。

        select count (distinct deptno)
          from emp;
    

    – 在分组函数中使用 nvl 函数
    – nvl 函数可以使分组函数强制包含含有空值的记录

        select avg (nvl (comm, 0))
          from emp;
    

– group by 子句
– 通过 GROUP BY 子句可将表中满足WHERE条件的记录按照
-> 指定的列划分成若干个小组
– 其中GROUP BY子句指定要分组的列
– 注意:在group by 中,select子句只允许出现分组函数、或在group by中指定的列
– 如果在查询中使用了组函数,任何不在组函数中的列或表达式
-> 都必须包含在GROUP BY子句中

    select deptno from group by deptno;
    select deptno, job, sum(sal) 工资总和 from emp group by deptno, job;

– having 子句

    select deptno, max(sal) 最大值 from emp
     group by deptno
    having max(sal) > 2900;

-组函数嵌套

与单行函数不同,组函数只能嵌套两层

select 语句执行顺序:

5 SELECT       [column,] group_function(column)

1 FROM         table

2 [WHERE       condition]

3 [GROUP     BY column]

4 [HAVING    roup_function(column)expression 

6 [ORDER BY column| group_function(column)expression];


SELECT语句执行过程:
1.通过FROM子句中找到需要查询的表;

2.通过WHERE子句进行非分组函数筛选判断;

3.通过GROUP BY子句完成分组操作;

4.通过HAVING子句完成组函数筛选判断;

5.通过SELECT子句选择显示的列或表达式及组函数;

6.通过ORDER BY子句进行排序操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值