聚合函数与分组

一、聚合函数

     1 执行行和列计数(count)

             select count (*) from 表名;                                                       *  返回全部值,包括null值

            select count (all 列名0 from 表名;                                              * 排除空值

            select count (distinct 列名) from 表名;                                     *  排空,去重。

     2 返回列合计算(sum)

            select sum (列名) from 表名;                                                    *求整形和浮点型。

            select sum (*) from 表名;                                                          *写法错误(sum不可使用*通配符)

    3 获取平均值(avg)                                                                                          

              select avg(列名) from 表名;                                                     *自动过滤null值,返回值错误。     

              select avg (列名) from 表名 where 列名 is not null;                                  

              select sum(列名)/count(liem) as 列名 from 表名;

     4 返回最值(max/min)                                                                                没有all  distinct   *这些规范

                  SELECT MAX(s_grade) FROM t_stu;                     *最大值

                  SELECT MIN(s_grade) FROM t_stu;                     *最小值


二、数据分组(行分组)

      1 过滤分组数据

                select 列名,集合函数 from 表名 (where 条件) grounp by 列名;                                单行

                                      select 列名,列名 from 表名 group by 列名,列名;                                  多行

    *group by  后两个条件,若第一个分组完成,第二个在第一个的基础上分组。

      使用后,投影的列有两种:1.group by 后面的列

                                          2.聚合函数使用的列

                           过程:from 存储、 where条件过滤、 分组、 集合投影。

      2 使用having语句

                  select 列名 from 表名 group by 列名 having 条件;

   HAVING和WHERE区别
                   二者都是过滤条件,WHERE运行在分组前,因此不能执行任何聚合函数。

                  HAVING是运行在分组后,只能用做聚合函数的过滤。


   SQL的执行顺序
       第一步:执行FROM
       第二步:WHERE条件过滤
       第三步:GROUP BY分组
       第四步:执行SELECT投影列
       第五步:HAVING条件过滤

       第六步:执行ORDER BY 排序

       第七步:LIMITI 限定返回行

    








  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值