聚合函数与分组


1、为什么要使用聚合函数与分组?

     在使用基本的SQL语句从数据库中抽取数据后,然后在应用程序代码中进行汇总。但是,在网络环境中,如果从数据库中返回成千上万条记录,仅仅是为了得到一个汇总值,这样的效率显然很差的。使用SQL中的聚合函数在数据库中计算,最后通过网络返回单一的值,无疑是更好的解决方。
2、  常用的聚合函数:
    count:返回结果集中行的数目
      county(*)代表返回表中行记录的总数
      count(列名)代表返回表中不为空的记录数
    sum:返回结果集中所有值得总和
      不能使用星号(*)通配符
    avg:返回结果集中所有值的平均值
    max:返回结果集中所有值的最大值
    min:返回结果集中所有值的最小值
3、 数据分组:group by
    分组查询中什么列可以作为查询列:
       1.查询的列是一个聚合函数
       2.查询的列如果是一个普通列,必须按这列分组
    数据分组的执行顺序:

        如:select s_name,avg(s_score) from t_Student where s_score>=60 and s_name!='jr'
   group by s_name having avg(s_score)>=70
   order by  avg(s_score) desc;
   1.先执行where对全表数据做筛选
   2.针对筛选后的结果集按s_name进行分组,将s_name相同的记录放在1组
   3.针对每1组执行select s_name,avg(s_score),有几组就执行几次
   4.将每组的执行结果拼起来
   5.对上面的结果根据having做筛选
   6.排序
4、 WHERE和HAVING的区别:
    1、WHERE用在分组之前,不能包含聚合函数
    2、HVAING用在分组之后,对分组后的结果进行筛选,有HAVING,必定会有GROUP BY
4、  索引:
    1、索引是独立的数据库对象,也需要维护
    2、索引提高查询速度,降低增删改速度
    3、索引只会由满足一定条件的查询触发,并不是越多越好
    4、以下情况不适合建立索引:增删改操作很频繁/查询返回的数据量过大

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值