使用聚合函数进行统计汇总
概述:
在查询分析的SQL中我们经常会对一些数据进行统计查询。比如统计某个班有多少个学生、全班总分多少、平均分多少、最高分多少、最低分是多少、要实现这些数据的踪迹就需要用到SQL提供的聚合函数。
聚合函数的分类:
COUNT :统计行数量
SUM:获取单个列的合计值
AVG:计算某个列的平均值
MAX:计算列的最大值
MIN:计算列的最小值
数据分组
概述:
到目前为止,我们仅仅是在一个表中的所有行或者过滤行集合中应用聚合函数。如果我们想要获得数据集合中的子集的总计值,可能需要好几个单独的查询。例如:我们要统计每个班上有多少人,那么我们需要用两个查询语句。班级越多,SQL就会越多,显然这不是一种简洁的方法。SQL提供了一种技术,可以将表中的行分组,然后在每个组上应用聚合函数。这种分组技术与聚合函数一起使用时,功能很强大,使代码页面更加简洁,容易整理。
having和where的区别:
二者都是过滤条件,where运行在分组前,因此不能执行任何聚合函数。having是运行在分组后,只能用作聚合函数的过滤。
概述:
在查询分析的SQL中我们经常会对一些数据进行统计查询。比如统计某个班有多少个学生、全班总分多少、平均分多少、最高分多少、最低分是多少、要实现这些数据的踪迹就需要用到SQL提供的聚合函数。
聚合函数的分类:
COUNT :统计行数量
SUM:获取单个列的合计值
AVG:计算某个列的平均值
MAX:计算列的最大值
MIN:计算列的最小值
数据分组
概述:
到目前为止,我们仅仅是在一个表中的所有行或者过滤行集合中应用聚合函数。如果我们想要获得数据集合中的子集的总计值,可能需要好几个单独的查询。例如:我们要统计每个班上有多少人,那么我们需要用两个查询语句。班级越多,SQL就会越多,显然这不是一种简洁的方法。SQL提供了一种技术,可以将表中的行分组,然后在每个组上应用聚合函数。这种分组技术与聚合函数一起使用时,功能很强大,使代码页面更加简洁,容易整理。
having和where的区别:
二者都是过滤条件,where运行在分组前,因此不能执行任何聚合函数。having是运行在分组后,只能用作聚合函数的过滤。